Definicin de Clases y Variables de referencia' - PowerPoint PPT Presentation

1 / 42
About This Presentation
Title:

Definicin de Clases y Variables de referencia'

Description:

... una variable de tipo int o double, es necesario inicializarla con los valores que tu requieres. ... El m todo NO debe de decir int, double, void ni nada. ... – PowerPoint PPT presentation

Number of Views:53
Avg rating:3.0/5.0
Slides: 43
Provided by: eoliv
Category:

less

Transcript and Presenter's Notes

Title: Definicin de Clases y Variables de referencia'


1
Definición de Clases y Variables de referencia.
2
Qué es un objeto?
  • Un objeto es una combinación de datos (variables)
    y acciones (métodos).
  • Estos datos y estas acciones están relacionadas
    entre sí, de manera que dan sentido al objeto.
    Esto es encapsulación.
  • Ejemplo Un punto x,y en un plano Cartesiano.
  • objeto punto1
  • datos coordenadas (x, y )
  • métodos getX, getY, setX, setY.

3
Qué es una clase?
y
x
  • Una clase es una generalización de un objeto.
  • Una clase es un modelo o formato que deben
    cumplir todos los objetos que pertenecen a dicha
    clase.
  • En el ejemplo del Punto, podemos tener un objeto
    punto1, sin embargo no será único. Todos los
    demás puntos que se dibujen en el plano
    Cartesiano, punto2, punto3, etc., tienen el mismo
    patrón de datos y comportamiento es decir todos
    están dibujados en una posición (x,y), y se
    pueden accesar sus datos con getX y en getY.
  • Cada uno de estos puntos es un objeto o instancia
    de la clase Point

4
más sobre clases...
  • Una vez que especificamos o creamos una clase
    podemos construir cualquier numero de objetos que
    pertenezcan a dicha clase y que por lo tanto
    tengan el mismo comportamiento.
  • Los objetos creados a partir de una clase son
    instancias de esa clase.

5
Variables de Instancia y Variables de Clase
  • Variables de Instancia.- Cada objeto que
    pertenece a la clase tiene una copia personal de
    la variable.
  • Variables de Clase.- Existe una sola copia de la
    variable, sin importar el numero de objetos que
    fueron creados de dicha clase.

6
Caracterísiticas de la Programación orientada a
objetos Polimorfismo...
  • Si tuvieramos una clase Circulo, para la cual
    también se definieron los métodos getX y getY,
    JAVA por su característica de polimorfismo sabrá
    a qué método referenciar cuando se invoque
    objeto.getX
  • Esto es, si tenemos la siguiente definición
  • private Point punto1
  • private Circulo circulo1
  • Cuando se invoca al método
  • punto1.getX() // se está referenciando al
    método getX que pertenece a la clase Point.
  • circulo1.getX() // se está referenciando al
    método getX que pertenece a la clase Circulo.

7
Caracterísitcas de la Programación orientada a
objetos Herencia...
  • Cuando una clase hereda las variables y métodos
    de otra clase, se dice que la primera extiende
    a, o es una subclase de la segunda.
  • Se profundizará en este tema más adelante.

8
Clase Point
Variable de clase (estática)
public class Point
private static int numCreated0
punto1
punto2
punto3
private int x0
private int y0
x,y
x,y
x,y
x 5 Y 7
x 8 Y 3
x 4 Y 9
Métodos

Estos campos no pueden ser accesados desde afuera
de la clase
9
Definiendo un objeto.
  • Las siguientes son opciones válidas para definir
    un objeto de una clase
  • public Persona persona1 //con acceso para otras
    clases
  • private Persona persona1 //para uso exclusivo
    dentro de la clase
  • Un arreglo de objetos
  • public Persona personas
  • Para asignar el objeto a la variable
  • persona1 new Persona()
  • personas new Persona100
  • personas new PersonaMAX_PERSONAS
  • Se puede hacer al mismo tiempo
  • private Persona personas new Persona()
  • private Persona personas new
    PersonamaxPersona

10
Creando un constructor
  • Es posible crear varios constructores para una
    misma clase, que hagan algo dependiendo del tipo
    de parámetros que reciben. Esto se llama
    polimorfismo.

public Vagon() peso 0
Recordar NO lleva definición Tipo de dato de
entrada. El nombre del constructor es el mismo
que el de la clase. Los constructores accesan
directamente las variables de instancia. No se
usan métodos para asignar los valores.
11
Constructores
  • Cuando utilizas una variable de tipo int o
    double, es necesario inicializarla con los
    valores que tu requieres.
  • De la misma manera los objetos de una clase
    necesitan ser inicializados cuando son creados.
  • La forma de inicializar los objetos de una clase,
    es al momento de crearlos con el estatuto new.
  • El estatuto new llama a los métodos constructores
    de la clase y envía los datos iniciales con los
    que se creará el objeto.

12
Caracterísiticas de los métodos constructores
  • Tienen el mismo nombre de la clase.
  • Pueden existir varios métodos constructores para
    la misma clase, con diferentes parámetros,
    siempre y cuando se conserve el mismo nombre de
    la clase.
  • El método NO debe de decir int, double, void ni
    nada.
  • Aunque el método constructor no requiera
    parámetros, es necesario dejar los paréntesis
    vacíos. Default Constructor Ejemplo public
    Point( )

13
Cambiando los valores de las variablesde
instancia.
  • Normalmente los valores de las variables de
    instancia los declararemos como private.
  • Para cambiar el valor de una variable de
    instancia se usan metodos mutadores
  • public void setEdad(int edad)
  • this.edad edad
  • ó
  • public void setEdad(int e)
  • edad e

Si la variable local que se recibe se llama igual
que la variable de instancia se usa el this.
Por convención los métodos Se inician con
minúscula y cada palabra que define el método va
con mayúscula.
No olvidar el void.
14
Regresando el valor de una variable de instancia
  • Los métodos que regresan un valor de variable de
    instancia se declaran usando el valor de retorno.
    Y de denominan métodos accesores.
  • public int getNumMaq()
  • return numMaq

No recibe parámetros
15
Métodos
  • Los métodos describen lo que un objeto puede
    hacer.
  • Métodos de instancia o no-estáticos.- Existen
    solo para los objetos y deben ser llamados por un
    objeto en particular.

Formato objeto.método
Ejemplo punto1.getX()
16
Métodos
  • Los métodos describen lo que un objeto puede
    hacer.
  • Métodos de clase o estáticos.- Existen solo para
    la clase y NO pueden ser llamados por los objetos
    en forma individual.

Este es un método estático !!
Formato clase.método
Nota Los métodos estáticos NO accesan datos del
objeto !!
Ejemplo Point.getNumCreated()
17
Métodos
  • Definición de un método
  • return-type name(argument-list) body
  • Parámetros Formales
  • Lista de argumentos que se encuentran en el
    encabezado de la definición del método
  • Argumentos Actuales
  • Lista de argumentos que se encuentran al momento
    de hacer la llamada al método.
  • Los parámetros deben de corresponder en número,
    orden y tipo.

18
Métodos
  • Variables Locales Son declaradas dentro del
    método y se crean cada vez que se llama a dicho
    método.
  • Paso de parámetros por valor Para variables
    primitivas, los parámetros formales son copia de
    los argumentos, de manera que se protege la
    integridad de los argumentos actuales.

19
Métodos
  • El paso de parámetros por valor protege la
    integridad de los argumentos actuales Si el
    método modifica sus parámetros formales, los
    argumentos actuales permanecen sin cambio.

20
Creando métodos de la clase
  • Asegúrate de reflejar el valor de retorno en la
    definición del método y recibir los parámetros.
  • private boolean setAutores(int numAutores)
  • if (numAutores lt MAX_AUTORES)
  • this.numAutores numAutores
  • return true
  • else
  • return false
  • public boolean agregaAutor(String nombre)
  • autoresnumAutores new Autor(nombre)
  • return setAutores(numAutores 1)

21
Regresando un objeto.
  • El siguiente código muestra un ejemplo de retorno
    con un objeto.
  • public Persona masEdad()
  • int posMax 0
  • for (int i 0 i lt numPersonas i)
  • If (personasi.getEdad() gt personasposMax.get
    Edad())
  • posMaxi
  • return personasposMax

22
Mandando llamar a los métodos de una clase.
  • int i 0
  • String titulo
  • String nombre
  • do
  • stdOut.print("Dame el título del libro")
  • stdOut.flush()
  • libroi.setTitulo(stdIn.readLine())
  • stdOut.print("Dame el número de páginas")
  • stdOut.flush()
  • libroi.setPagina(Integer.parseInt(stdIn.readLin
    e()))
  • do
  • stdOut.print("Dame el nombre del autor")
  • stdOut.flush()
  • libroi.agregaAutor(stdIn.readLine())
  • stdOut.print("Deseas ingresar otro autor
    s/n?")
  • stdOut.flush()
  • cont stdIn.readLine()
  • while (cont.equals("s"))
  • stdOut.print("Deseas ingresar otro libro s/n?")

23
Trabajando con valores de retorno.
  • stdOut.printLn(La persona de mayor edad, tiene
    persona1.masPeso().getPeso())
  • El método masEdad() regresa un objeto de tipo
    Persona
  • El objeto Pesona tiene un método getEdad()
  • Separando la instrucción
  • Persona p1 persona1.masPeso()
  • int edad p1.getPeso()
  • stdOut.printLn(La persona de mayor edad, tiene
    edad)

24
Acceso a los datos
25
Representación de los datos
  • Primitivos o Escalares.- Representan un valor
    por sí mismos. Son datos pequeños y se requieren
    pocos recursos (tiempo y espacio) para crearlos o
    destruirlos.
  • Objetos.- Es una variable más compleja que puede
    contener varios valores. Tienden a ocupar más
    espacio que los escalares. En este caso los
    identificadores o nombres de variables
    representan una dirección o localidad en memoria.
  • Los objetos son representados por referencia y
    los datos escalares o primitivos por valor.

26
Representación de los datos
  • Objetos.- Ejemplo
  • Point p1
  • En este caso p1 es solamente una dirección o una
    referencia en memoria.
  • Mientras p1 no sea inicializado adecuadamente su
    valor será null
  • Para crear realmente un objeto debemos utilizar
    el operador new en conjunto con los
    contstructores definidos.

27
Acceso a los datos
  • Para accesar un método se utiliza el operador
    infijo . De manera que tenemos
    objeto.método
  • Generalmente para accesar una variable de
    instancia NO se hace directamente
    (objeto.variable) sino que se recurre a un
    método hecho especialmente para ello, por
    ejemplo p1.getX()
  • Si se desea accesar una variable de clase,
    entonces se utiliza el formato clase.método

28
Acceso a los datos
  • Si un objeto NO ha sido creado, ovbiamente no
    podemos accesar su información a través de ningún
    método.
  • Los únicos que sí pueden ser accesados aunque no
    exista ningún objeto, son los métodos y campos
    estáticos, pues estos dependen de la clase y no
    de los mismos objetos.

29
Igualdad y Asignación de objetos
Asignación y comparación de variables primitivas
  • int x 5
  • int y 5
  • x y // la comparación será verdadero !
  • Point p1 new Point(2,4)
  • Point p2 new Point(2,4)
  • p1 p2 // será falso !
  • porque está comparando dos direcciones.

Asignación y comparación de variables objeto
30
Igualdad y Asignación de objetos
  • Point p1 new Point(-1, -1)
  • Point p2 new Point(5, 10)
  • p2 p1 // lo que tenía p2 se va al garbage
    collector...
  • cuál será el resultado de la siguiente
    comparación?
  • p1 p2

// será verdadero ! porque los dos objetos tienen
la misma dirección.
31
Paso de parámetros por referencia
  • En JAVA, cuando se pasan parámetros a un
    método...
  • Todos los valores primitivos son pasados por
    valor.
  • Todos los valores no-primitivos (referencias
    (direcciones) y objetos) son pasados por
    referencia.

32
Alcance de Variables (Scope)
  • Scope Alcance de las variables. Se refiere a
    la porción de programa donde una variable vive
    o tiene significado.
  • Class Scope.- Comprende los identificadores
    declarados a nivel clase. Toda la clase puede
    ver dichas variables.
  • Block Scope.- Comprende identificadores
    declarados dentro de un bloque . Las
    variables locales a un método pueden ser
    utilizadas desde su punto de declaración hasta el
    final del bloque. Cuando sales de bloque se
    mueren las variables.

33
Modificadores de acceso
34
Modificadores de Acceso
  • Normalmente se manejan 2 modificadores de acceso
  • public
  • private

35
Modificadores de Acceso
  • Cuando se heredan los objetos todos sus elementos
    con modificadores de public pueden seguir siendo
    accesados de la misma manera por instancias de la
    subclase.
  • Los elementos con modificadores de private solo
    van a poder ser accesado por métodos declarados
    en la superclase.

El objetivo del modificador private es que
aquellos elementos declarados con él sean
accesados únicamente por otros elementos internos
a la clase.
36
Modificadores de Acceso
Private
Public
Public
Private
Superclase
Subclase
37
Modificadores de Acceso
  • Cuando se maneja herencia y se desea que
    elementos que necesitan ser privados puedan ser
    accesados por otros elementos nuevos dentro de
    las sublcases entonces se utiliza el modificador
    de acceso protected.

El modificador protected es en todos los
aspectos idéntico al modificador private excepto
en la forma en la que funciona con la herencia.
38
Modificadores de Acceso
Private
Private
Protected
Public
Protected
Public
Private
Public
Superclase
Subclase
39
Modificadores de Acceso
40
Modificadores para campos...
  • Modificadores para Campos
  • modificadores de acceso
  • public se puede tener acceso a él desde
    cualquier parte desde donde la clase que lo
    contiene pueda accesarse
  • protected puede accesarse solamente desde
    adentro de su clase, desde clases del mismo
    paquete donde está su clase y por subclases de su
    clase
  • default (no se especifica el acceso) puede
    accesarse solamente desde adentro de su clase y
    por clases del mismo paquete de su clase
  • private pueden accesarse solamente desde
    adentro de su clase
  • modificadores de existencia
  • static existe uno para toda la clase, en lugar
    de uno para cada objeto de su clase
  • modificadores de uso
  • final no puede modificarse (i.e., constante o
    de sólo lectura)

41
Modificadores para métodos...
  • Modificadores para Métodos
  • modificadores de acceso
  • public se puede tener acceso a él desde
    cualquier parte desde donde la clase que lo
    contiene pueda accesarse
  • protected puede accesarse solamente desde
    adentro de su clase, desde clases del mismo
    paquete donde está su clase y por subclases de su
    clase
  • default (no se especifica el acceso) puede
    accesarse solamente desde adentro de su clase y
    por clases del mismo paquete de su clase
  • private pueden accesarse solamente desde
    adentro de su clase
  • modificadores de existencia
  • static existen para servir a su clase y no para
    servir a objetos individuales de su clase como
    consecuencia, los métodos static no tienen acceso
    a variables de instancia ya que éstas pertenecen
    a los objetos individuales, aún más, estos
    métodos no tienen acceso a this ni a super.
  • modificadores de uso
  • final no puede sobreescribirse
  • abstract debe sobreescribirse para que sea útil

42
Modificadores para clases...
  • Modificadores para Clases
  • modificadores de acceso
  • public se puede tener acceso a ella desde
    cualquier clase
  • default (no se especifica su acceso) puede
    accesarse desde adentro de cualquier clase de su
    mismo paquete, esto es, A fin de tener acceso por
    default a una clase, estas deben estar en el
    mismo paquete.
  • modificadores de uso
  • final no puede extenderse(heredada)
  • abstract debe extenderse (heredada) para que
    sea útil
Write a Comment
User Comments (0)
About PowerShow.com