Está en la página 1de 28

Clases:

Definicion
Instanciacion
Invocacion de metodos

1
Objetos:

Son entidades únicas e identificables.


Definen al paradigma de la Programación Orientada a Objetos.
Poseen identidad, datos y comportamiento. (atributos y
métodos)
Pueden ser simples o complejos, reales o imaginarios
Son instancias de una clase

2
Objetos y Clases
Clases
Una clase es una definición de un objeto.
Es un “molde” o “plantilla” que sirve para crear instancias.
A partir de una misma clase se pueden definir varias instancias. Cada una de ellas es
un objeto único e independiente.

CLASE INSTANCIAS o OBJETOS:

3
Conceptos de Orientacion a Objetos
Abstracción
Es ignorar los detalles para concentrarnos en características esenciales.
Simplifica funcionalidad e información acerca del objeto.
Ayuda a los usuarios a interactuar con el objeto.

Ejemplo : Un caballo posee muchas características.


Podemos concentrarnos únicamente en su raza y
velocidad.
Encapsulamiento
Los datos están “escondidos” dentro del objeto.
Provee dos visiones del objeto: Interna y Externa.
Ayuda a prevenir el cambio.

Ejemplo : Un auto oculta su funcionamiento en su interior.


Un usuario puede operarlo sin necesidad de entender
sus funciones internas. 4
Objetos y Clases (1)
Ejemplo: Software para una automotora:

“Nos interesa registrar la marca, el modelo, la cantidad de kilómetros, el nombre del


dueño actual y el precio al cual lo quiere vender. Por ejemplo:

•Juan Pérez quiere vender su Fiat Premio, que tiene 200.000 kilómetros en
U$S 5000.
•Pedro González quiere vender su Audi A3, que tiene 45.000 kilómetros en
U$S 52.000.
Interesa que el sistema pueda mostrar los datos de los autos, cambiar el precio de
venta y devolver la cantidad de kilómetros. La mayoría de los autos que vendemos
tienen 100.000 kilómetros.”
Cuando se nos presenta una realidad deberíamos responder las siguientes preguntas:

•¿Qué clases podemos identificar?


•¿Qué instancias de esa clase son nombradas en la realidad?
•¿Cómo debemos abstraer dicha clase?
•¿Qué comportamiento podemos identificar en dicha clase?
•¿Qué valores por defecto podemos identificar?

5
Objetos y Clases (respuestas 1)
Respondamos las preguntas para el ejemplo planteado:
1.¿Qué clases podemos identificar? La clase Auto.

2.¿Qué instancias de esa clase son nombradas en la realidad? El Fiat


Premio de Juan Pérez y el Audi A3 de Pedro González.

3.¿Cómo debemos abstraer dicha clase? Para responder esto debemos


ver que atributos nos interesa registrar para esa clase. Por ejemplo en
la realidad planteada interesa registrar: marca, modelo, kilómetros,
dueño actual y precio a vender. Estamos despreciando otros
características de los autos como puede ser color, consumo promedio,
cilindrada, etc. Una misma clase puede ser abstraída de diferentes
formas dependiendo de la realidad a modelar. Nota: La forma de
identificar los atributos es pensando que datos que nos interesa de
dicha clase en la realidad a resolver. Cada objeto instancia de una
clase va a tener su propio juego de atributos.

6
Objetos y Clases (respuestas 2)
4.¿Qué comportamiento podemos identificar en dicha clase? El
comportamiento es lo que queremos poder hacer sobre dicha
clase, usualmente lo podemos ver como la interfaz que
tenemos para utilizarla. En nuestro ejemplo nos interesa tener
métodos para mostrar los datos de los autos, cambiar el
precio de venta y devolver la cantidad de kilómetros.

Ejemplo2:

5.¿Qué valores por defecto podemos identificar? El único valor por


defecto que podemos identificar es 100.000 para el atributo
kilómetros.

7
UML (Unifield Modeling Lenguaje)
DEF: Es un lenguaje gráfico para visualizar, especificar, construir y documentar un
sistema. Ofrece un estándar para describir un "plano" del sistema (modelo),
incluyendo aspectos conceptuales tales como procesos de negocio, funciones del
sistema, y aspectos concretos como expresiones de lenguajes de programación,
esquemas de bases de datos y componentes reutilizables.

Consta de una notación gráfica para representar los elementos


participantes en un desarrollo orientado a objetos.

Permite describir completamente las fases de análisis y diseño


orientado a objetos.

Posee múltiples diagramas que describen cada una de las etapas del
desarrollo. Tales diagramas alcanzan un alto nivel de detalle para
implementar la solución al problema.

8
UML Representacion

•Superior: Contiene el nombre de la Clase


•Intermedio: Contiene los atributos (o variables de
instancia) que caracterizan a la Clase (pueden ser private,
protected o public). {OPCIONAL}
•Inferior: Contiene los métodos u operaciones, los cuales
son la forma como interactúa el objeto con su entorno
(dependiendo de la visibilidad: private, protected o
public). {OPCIONAL}

•Un diagrama sin Atributos ni Metodos se llama Diagrama Conceptual


•A este pueden lugo ir agregandose atributos y metodos.
•Los diagramas con los atributos y metodos se llaman Diagrama de
implementacion.
9
UML (Ejemplo clase Auto)

Auto.

- marca : String
- modelo : String

Atributos - kilómetros : double = 100.000


- dueñoActual : String
- precioVenta : double

+ mostrarDatos()
Modelos + setPrecioVenta(nuevoPrecio : double)
+ getKilometros() : double

10
Sintaxis UML de atributos

- kilómetros : double = 100.000


Valor por defecto (opcional)
Tipo de datos
Identificador
Alcance es quien puede tener acceso a este atributo,

•Publico (en UML se representa con +) y quiere decir que cualquiera puede
acceder a ese atributo.

•Privado (en UML se representa con -) y quiere decir que solamente desde la
clase podemos acceder a ese atributo.
•Protegido (en UML se representa con #), cuando veamos herencia y
paquetes entenderemos que quiere decir protegido.
•Por defecto (en UML se representa con no poner nada), cuando veamos
herencia y paquetes entenderemos que quiere decir por defecto.

11
Sintaxis JAVA de atributos

<modificador de alcance> <tipo de datos> identificador = <valor por defecto>;

EJ:

private double kilómetros = 100000, precioVenta;


private String marca, modelo, dueñoActual;

12
Metodos
DEF Los métodos en java son equivalentes a las funciones en otros lenguajes de
programación, pueden verse como algotimos encapsulados.
(Un algoritmo es un conjunto escrito de instrucciones o reglas bien definidas,
ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos
que no generen dudas a quien deba realizar dicha actividad.)

Buen ejemplo: ¿Cual es el ejemplo mas claro de algoritmo que conocemos?


Las recetas de cocina, si pensamos las rectas de cocina son una serie de pasos
que dados los ingredientes nos dan como resultado una comida.

En resumen los métodos reciben un serie de parámetros y devuelven un resultado.


Los mismos deben resolver una única tarea, por ejemplo en la clase

Parametros
Metodo Resultado
de entada

13
Sintaxis UML para metodos
+ setPrecioVenta(nuevoPrecio : double)

Valor por defecto (opcional)


Tipo de datos
Identificador
Alcance es quien puede tener acceso a este atributo,

•Publico (en UML se representa con +) y quiere decir que cualquiera puede
acceder a ese atributo.

•Privado (en UML se representa con -) y quiere decir que solamente desde la
clase podemos acceder a ese atributo.
•Protegido (en UML se representa con #), cuando veamos herencia y
paquetes entenderemos que quiere decir protegido.
•Por defecto (en UML se representa con no poner nada), cuando veamos
herencia y paquetes entenderemos que quiere decir por defecto.

14
Sintaxis JAVA para metodos

<modificador de alcance> <tipo de retorno> identificador ( <parámetros>);

Ejemplo:

public void setPrecioVenta(double nuevoPrecioVenta) {


// Cuerpo del metodo: (secuencia de instrucciones
que resuelven lo que debe hacer el método. )
precioVenta = nuevoPrecioVenta;
}

15
Escribiendo Clases 1
1. Siempre las clases se escriben en un archivo que lleva el mismo nombre de la
clase, por ejemplo la clase Auto va a estar escrita en el archivo Auto.java

2. La estructura general de una clase es:

package <nombre del paquete>;


// Secuencia de importaciones;
<modificador de alcance> class <nombre de la clase> {
// Definición de atributos
// Métodos constructores
// Definición de métodos
}

16
Escribiendo Clases 2
Ejemplo con Auto:

package automotora;
// Esta clase son los vehiculos de la automotora
public class Auto {
private String marca, modelo, propietario;
private double kilometros = 100000, precioVenta;
public Auto(String marcaParam, String modeloParam, String
propietarioParam, double precioVtaParam) {
marca = marcaParam;
modelo = modeloParam;
propietario = propietarioParam;
precioVenta = precioVtaParam;
}
}

17
Escribiendo Clases 3

En esta transparencia anterior, mostramos el primer constructor de la clase.

• El objetivo de los constructores es inicializar los atributos cuando instanciamos


una clase (construimos un objeto).

• Es el único método que no tienen tipo de retorno, esto es porque inicializa una
instancia de la clase y no tiene nada para devolver.

• Tiene el mismo nombre que la clase.

• Recibe como parámetro los valores a asignar a los atributos y en su cuerpo los
asigna a los atributos.

18
Escribiendo Clases 4
package automotora;
// Esta clase son los vehiculos de la automotora
public class Auto {
private String marca, modelo, propietario;
private double kilometros = 100000, precioVenta;
La forma en que Java
elige que constructor
public Auto(String marcaParam, String modeloParam, String ejecutar es según cuantos
propietarioParam, double precioVtaParam) { parámetros le pasamos,
marca = marcaParam; esto lo veremos al detalla
modelo = modeloParam; cuando veamos la sintaxis
propietario = propietarioParam; para instanciar una clase
precioVenta = precioVtaParam;
}
.
public Auto(String marcaParam, String modeloParam, String
propietarioParam, double precioVtaParam,
doble kmParam) {
marca = marcaParam;
modelo = modeloParam;
propietario = propietarioParam;
precioVenta = precioVtaParam;
kilomertros = kmParam;
}

} 19
Accediendo a los atributos 1 (get)

public double getKilometros() {


return kilometros;
}

1. El objetivo de este método es devolver el valor del atributo kilómetros.


2. Los métodos que retornan el valor de un atributo se le llama selectores y la convención
para su nombre es utilizar el nombre getNombreAtributo, por eso es que nuestro método
se llama getKilómetros.
3. El método no recibe parámetros.
4. El método retorna un valor de tipo double.
5. En el cuerpo, la palabra clave “return”, hace que el método termine la ejecución en esa
línea y devuelva el valor de la expresión que pongamos a la derecha. En nuestro caso
retorna el valor que tiene el atributo kilómetros.

20
Accediendo a los atributos 2 (set)

public void setPrecioVta (double nuevoPrecio) {


precioVenta = nuevoPrecio;
}

1. El objetivo de este método es cambiar el valor del atributo precioVenta.


2. Los métodos que modifican el valor de un atributo se le llaman modificadores y
la convención para su nombre es utilizar el nombre setNombreAtributo, por
eso es que nuestro método se llama setPrecioVenta.
3. El método recibe como parámetro el nuevo precio de venta (nuevoPrecio).
4. El método no devuelve nada, por eso su tipo de retorno es void.
5. En el cuerpo, se asigna el contenido del parámetro nuevoPrecio al atributo
precioVenta.

21
Accediendo a los atributos 2 (show)

public void showDatos () {


System.out.println(“Auto “+marca+”/”+modelo);
System.out.println(“Propietario “+propietario);
System.out.println(“km: “+kilometros);
System.out.println(“us$ “+precioVenta);
}

1. El objetivo de este método es mostrar los datos del Auto, el mismo se


basa en utilizar el valor de los atributos.
2. El método no recibe parámetros.
3. El método no devuelve nada, por eso su tipo de retorno es void.

22
Instanciacion 1
Idea: Instanciar = crear nuestros objetos.

• ¿Cómo podemos hacer para crear las instancias de una clase?


La forma de crear instancias de una clase es llamando a los métodos constructores.

• ¿Qué métodos constructores tenemos en nuestra clase?


Recordemos que en nuestra clase definimos dos métodos constructores:
public Auto(String marcaPrm, String modeloPrm, String dueñoActualPrm, double
precioVentaPrm)
public Auto(String marcaPrm, String modeloPrm, String dueñoActualPrm, double
kilómetrosPrm, double precioVentaPrm)

• ¿Por qué definimos los constructores como public?


Para poder instanciar nuestra clase desde otra clase necesitamos poder acceder tanto a la clase
como al método constructor, por esta razón definimos ambos con la etiqueta public.

• ¿Qué pasa si no definimos un método constructor?


Si no definimos un métodos constructor Java define uno por nosotros sin parámetros el cual
inicializa nuestro objeto con todos sus atributos en el “cero” del tipo de datos.

23
Instanciacion 2
¿Cómo invocamos al método constructor?
La palabra reservada new se utiliza para invocar al método constructor.

Sintaxis:

variable = new NombreClase( parametros );

Ejemplo:
Auto auto1 = new Auto("Fiat", "Premio", "Juan Pérez", 200000, 5000);

Auto auto2 = new Auto("Audi", "A3", "Pedro González", 45000, 52000);

¿Cuál de los 2 constructores estamos invocando?


La respuesta es simple, el que tiene 5 parámetros, según los parámetros que le
pasemos en la invocación Java elige que constructor invocar.

24
Instanciacion 3 (resultado)

25
Ejecucion de metodos 1
Los métodos que estamos viendo siempre ejecutan sobre una instancia de la clase.
Los métodos de instancia cumplen la siguientes reglas.
– Tienen acceso a todos los atributos de la clase (los valores sobre
la instancia).
– Para ejecutarlos debemos utilizar la notación “.”

¿Como es la notación “.” ?


.
nombreDeVariable nombreMetodo(valores para los parámetros);

Ejemplo:

auto1.setPrecioVenta(5500);

En este ejemplo estamos ejecutando el método setPrecioVenta sobre la


instancia auto1 con el parámetro 5500.

26
Ejecucion de metodos 2 (ejemplo)

package paquete1;
public class Ejemplo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Auto auto1 = new Auto("Fiat", "Premio","Juan Perez", 200000, 5000);
Auto auto2 = new Auto(“Audi", “A3",“G. Trelles", 450000, 52000);
auto1.showDatos();
auto2.showDatos();
auto1.setPrecioVta(5500);
System.out.println(“Los nuevos datos del “+auto1.getMarca()+” son:\n);
auto1.showDatos();
}
}

27
FIN

28

También podría gustarte