LENGUAJE DE PROGRAMACION ORIENTADO A OBJETOS

PRINCIPIOS DE LA ORIENTACION A OBJETOS

Universidad Nacional de Ingeniería Facultad de Ingeniería Industrial y de Sistemas
Angel Chata Tintaya (angel.chata@gmail.com) http://aulaportal.googlepages.com
1

Un nuevo paradigma
1. OO es un nuevo paradigma de diseño y programación 2. OO se basa en modelar objetos del mundo real 3. OO crea programas reusables 4. Los objetos contienen en si mismo información y comportamiento.

2

Que es un objeto?
1. Definición filosófica: Es una entidad que se puede reconocer. 2. Para la tecnología de objetos : Es una abstracción de un objeto del mundo real. 3. En términos de negocios: Es una entidad relevante al dominio del negocio. 4. En términos de software: Es una estructura que asocia datos y funciones. 5. Algunos ejemplos de objetos en POO son: Cliente, Factura, Contrato, Película. Un Cliente tiene un nombre, dirección, crédito. Un Cliente podría alquilar una película, pagar una factura, devolver una película.

3

Los objetos realizan operaciones
1. Un objeto es útil si tiene alguna función o comportamiento en el sistema. 2. Cada comportamiento se denomina operación.

Objeto: Mi lapicero azul Operación: Escribir

Objeto: El cajero automático P5 Operación: Entregar dinero.

4

Los objetos tiene valores
1. Los objetos conocen cual es su estado actual. 2. Cada conocimiento del objeto se denomina atributo.

Objeto: Mi lapicero azul Atributo: Cantidad de tinta

Objeto: El cajero automático P5 Atributo: Disponible en soles.

5

Los objetos son una abstracción
1. Todo depende del contexto. 2. Cuando se modela un objeto, solo se requiere modelar las operaciones y atributos que son relevantes para el problema

Objeto: Mi lapicero azul Operación: Apuntar una pizarra. Atributos: Longitud, Marca.

6

Encapsulamiento
1. El encapsulamiento oculta como las cosas funcionan dentro de un objeto 2. Solo nos comunicamos con el objeto a través sus métodos 3. Los métodos son una interfaz que permite ignorar como están implementados. 4. No es posible evadir el encapsulamiento en OO

El cajero automático P5 es un objeto que entrega dinero. El cajero encapsula todas las operaciones a los tarjetahabientes. Evadir este encapsulamiento es un robo al cajero.

7

Ejercicio
Complete con operaciones y atributos lo siguiente: Objeto Cajero automático P5 Universidad Computadora Auto de carreras DVD Satélite
8

Operaciones

Atributos

Clases
1. Una clase es una molde para crear objetos. 2. Para definir una clase se tiene que indicar las operaciones y atributos 3. Los objetos son instancias de la clase. 4. Cuando se cree un cajero automático P3 no se requiere indicar sus operaciones y atributos. 5. Solo se requiere indicar a que clase pertenece. Clase Atributos Métodos Cliente int edad String nombre String dirección cambiarDireccion() Película String titulo double precio String categoria cambiarPrecio()
9

Identificando de clases
Reconocer una estructura y comportamiento comunes entre varios objetos. Objeto Lapicero rojo Pluma y tinta Operaciones Escribir Recargar Escribir Recargar Atributos Cantidad de tinta Color de tinta Cantidad de tinta Color de tinta

A que clase pertenecen estos dos objetos?

10

Ejemplo de clases
1. El carro gris representa una clase, una plantilla para crear objetos, el numero del auto y el color no son conocidos. La plantilla define como funciona el auto. Debajo de la ³Clase Carro´ estan el ³Objeto Carro 1´ y el ³Objeto Carro 2´ los cuales son una instanciación de la ³Clase Carro´
2

2.

2

11

Clases y Objetos
1. Las clases son definiciones estáticas que nos permite entender todos los objetos de esa clase. 2. Los objetos son entidades dinámicas que existen en el mundo real y en simulaciones del mundo real.

Ejercicio Mencione dos clases y dos objetos sobre: 1. Geografia 2. Matematicas 3. Cine 4. Biología 5. Internet

12

Herencia
1. Entre diferentes clases pueden haber similitudes 2. La herencia es una relación entre clases donde una es padre de otra. 3. Las propiedades comunes definen la superclase. Clase padre. 4. Las subclases heredan estas propiedades. Clase hijo. 5. Un objeto hijo es un-tipo-de una superclase. 6. Un Helicóptero es un tipo de Nave Aérea. Nave Aérea Jumbo Helicóptero Globo Dirigible

Indique que propiedades tiene la clase Nave Aérea.
13

Polimorfismo
1. Significa que la misma operación se realiza en las clases de diferente forma. 2. Estas operaciones tienen el mismo significado, comportamiento. 3. Internamente cada operación se realiza de diferente forma. Abordar pasajeros Barco Tren Helicóptero

Ejemplos Realizar ³calcularIntereses´ es diferente en clases Cuenta de Ahorros, Cuenta CTS, Cuenta Corriente. En java se representa como: cuenta.calcularIntereses();
14

Ejercicio
Determine las clases, métodos, atributos y asociaciones del siguiente problema. Puede aplicar herencia?
Tacora Films esta en el negocio de alquiler de películas a sus clientes. Y ahora esta automatizando el proceso de alquiler. El cliente escoge las películas en la tienda y las lleva a la caja para proceder con el alquiler. El empleado de la tienda solicita la TacoraCard al cliente para identificarlo y escanea el código de barras de cada película que esta alquilando. Los clientes tienen que ser socios de Tacora Film Club para poder alquilar películas. Al suscribirse al club entregan datos como nombre, dirección, teléfono. TacoraCard tiene un único numero impreso que identifica al cliente. Cada alquiler tiene un numero único para identificarlo y en el acuerdo se indica la fecha de inicio del alquiler y la lista de películas que se están alquilando. No se puede alquilar mas de 10 películas. No se sabe cuando exactamente el cliente devolverá la película. El gerente de Tacora esta considerando emplear el mismo programa para alquilar otros artículos como libros, reproductores de VHS y de DVD, CDs de juegos. Cada articulo tiene un precio de alquiler, numero de días que puede ser alquilado, el titulo de la película, una descripción breve, el tipo de película (Familiar, Acción, Comedia...)
15

Clases en Java
public class Estudiante { private int edad; private String nombre; private Date fechaNcmto; public int getEdad() { return edad; } }

atributos metodos

clase Estudiante con atributos y un metodo llamado getter

16

La clase Pelicula.java
public class Pelicula { private String titulo; private String tipo; public String getTitulo () { return titulo; } public String getTipo () { return tipo; } public String toString () { return "titulo "+titulo+" tipo "+tipo; } } Cuales son los metodos? Cuales son los atributos?

17

Creación de objetos
1. Cada objeto es una instancia de alguna clase.
Pelicula private String titulo; private String tipo; public void mostrarDetalles() public void obtenerTitulo() Odisea 2001 Ciencia Ficcion El Padrino Drama

2. Los objetos se crean con el operador new. Película pelicula1 = new Película(); Película pelicula2 = new Película(); 3. El operador new realiza las siguientes acciones: - Separa memoria para el nuevo objeto - Invoca el método de inicio de la clase llamado constructor. - Retorna la referencia a un nuevo objeto. pelicula1
18

Primitivas y Referencias
1. Las variables primitivas almacenan valores. int i; int j = 3; i j
0

3

2. Los objetos almacenan referencias Pelicula pelicula1; pelicula1 nul l

Pelicula pelicula2 = new Pelicula();

pelicula2

19

Ejemplos
1. Los objetos deben ser declarados antes de ser usados 2. 3. 4. 5. La declaración requiere el tipo de objeto (clase) El ³=³ se usa para la asignación (incluyendo inicialización) Para la inicialización de un objeto usa el operador new Un objeto puede ser inicializado a null

6. Los arreglos de objetos se declaran como los arreglos de primitivas 7. Los arreglos de objetos por defecto se inicializan con null Ejemplos: Empleado emp1 = new Empleado(123456); Empleado emp2; emp2 = emp1; Departamento dept[] = new Departamento[100]; Test[] t = {new Test(1), new Test(2)}; 20

La referencia null
1. Los objetos inician en null 2. Se puede comparar un objeto con null 3. Se puede liberar la referencia con null. Pelicula pelicula1 = null; if (pelicula1 == null) { pelicula1 = new Pelicula(); } pelicula1 = null;

21

Asignando referencias
Se puede asignar una variable referencia a otra resultado en dos referencias al mismo objeto Pelicula pelicula1 = new Pelicula("Betty Blue"); Película pelicula2 = pelicula1;

pelicula1 pelicula2

22

Identidad
El operador == ‡ ‡ ‡ Prueba la identidad exacta del objeto Comprueba si dos variables se refieran al mismo objeto Para tipos primitivos, comprueba valores iguales

Empleado a = new Empleado(1); Empleado b = new Empleado(1); if (a==b)... // false Empleado a = new Empleado(1); Empleado b = a; if (a==b)... // true

int a = 1; int b = 1; if (a==b)... // true

23

Variables de instancia
1. Las variables de instancia se declaran en la clase. Estos son atributos de la clase. public class Pelicula { public String titulo; public String tipo; } 2. Las variables publicas de instancia se acceden con el operador punto Pelicula pelicula1 = new Pelicula(); pelicula1.titulo = "Kramer vs Kramer"; if (pelicula1.titulo.equals("El planeta de los simios") pelicula1.tipo = "Ciencia Ficcion";

24

Métodos y argumentos
1. Un método es equivalente a una función o subrutina de otros lenguajes. 2. Los métodos solo se definen dentro de una clase. modificador tipoDeRetorno nombreMetodo (argumentos) { // desarrollo del método; } 3. En la definición del método se indica el tipo y el nombre de los argumentos. public void setTipo (String nuevoTipo) { tipo = nuevoTipo; }
25

Métodos y argumentos
4. Si el método tiene varios argumentos, estos se separan por comas. public void setDatos (String nuevoTitulo, String nuevoTipo) { tipo = nuevoTipo; titulo = nuevoTitulo; } 5. Si el método no tiene argumentos, se deja solo los paréntesis public void mostrarDetalles() { System.out.println("El titulo es "+titulo); System.out.println("El tipo es "+tipo); }

26

Valores de retorno
1. Se usa la sentencia return para salir del método retornando un valor . 2. No se requiere return si el tipo de retorno es void.

public class pelicula { private String tipo; //... public String obtenerTipo () { return tipo; } }
27

Recursividad
1. Un método recursivo es aquel que se invoca a si mismo. 2. Un método recursivo debe tener al menos un caso no recursivo 3. Un método recursivo debe contar con otros casos recursivos que se aproximen al caso no recursivo para evitar la recursión infinita. Factorial de 0 = 1 Factorial de N = N * Factorial de N - 1

public class Recursion { public static void main (String[] args) { System.out.println( factorial(5) ); } public static int factorial (int numero) { if (numero == 0) return 1; if (numero > 0 ) return ( numero * factorial (numero ± 1) ); } } 28

Invocando métodos
Se utiliza el operador punto para invocar el método de una clase, si el método es de la misma clase, no se requiere el calificador de la clase.
Pelicula.java public class Pelicula { private String titulo,tipo; public String getTipo () { return tipo; } public void setTipo (String nuevoTipo) { tipo = nuevoTipo; } } PruebaPeliculas.java public class PruebaPeliculas { public static void main (String[] args) { Pelicula pelicula1 = new Pelicula(); pelicula1.setTipo("Comedia"); if (pelicula1.getTipo().equals("Drama")) { System.out.println("La pelicula es un drama"); } else { System.out.println("La pelicula no es un drama"); } 29 } }

Encapsulamiento
Las variables de instancia de una clase deberían ser declaradas como privadas Solo un método debería acceder a las variables privadas. No se debe acceder a las variables de instancia directamente, sino a través de un método.
Pelicula pelicula1 = new Pelicula(); if (pelicula1.titulo.equals("Los doce del patibulo")) { pelicula1.setTipo("Accion"); }

Cual de estas líneas no cumple con el encapsulamiento?
30

La clase Pelicula.java
public class Pelicula { private String titulo; private String tipo; public void setTitulo (String nuevoTitulo) { titulo = nuevoTitulo; } public void setTipo (String nuevoTipo) { tipo = nuevoTipo; } public String getTitulo () { return titulo; } public String getTipo () { return tipo; } public String toString () { return "titulo "+titulo+" tipo "+tipo; } }

31

Modificadores de Acceso
Las variables y métodos en Java tiene restricciones de acceso, descrito por los siguientes modificadores de acceso: private: El acceso es limitado a la clase Ejemplo: private int x; default (sin modificador): Acceso limitado al paquete Ejemplo: int x; protected: Limitado al paquete y las subclases. Ejemplo: protected void setName() { . . . } public: Acceso desde todas las clases en todos los paquetes Ejemplo: public String getName() { . . . }

32

Clases y paquetes en Java
1. Una clase es un molde para crear múltiples objetos que encapsula datos y comportamiento. 2. Un paquete es un contenedor (agrupador) de clases que estan relacionadas lógicamente. 3. Un paquete tiene sus clases en un mismo directorio 4. Varias clases pueden tener el mismo nombre pero en diferente paquete.
Para el problema de los alquileres se encuentran las clases: Paquete: pe.edu.uni Clases: Clase Pelicula Clase Contrato Clase Cliente pe.edu.uni.Película pe.edu.uni.Contrato pe.edu.uni.Cliente Directorio: C:/ pe/edu/uni/ Archivos en C:/pe/edu/uni/ Película.java Contrato.java Cliente.java
33

Paso de primitivas a métodos
Cuando el argumento es una primitva, se genera una copia de la variable para el método TestPrimitivas.java public class TestPrimitivas { public static void main (String[] args) { int numero = 150; unMetodo(numero); System.out.println(numero); } private static void unMetodo(int numero) { numero = 0; System.out.println(numero); } }
34 Que muestra el programa?

Paso de referencias a métodos
Cuando se pasa como argumento un objeto referencia, no se genera copia. El argumento referencia al objeto original. TestReferencias.java public class TestReferencias { public static void main (String[] args) { Pelicula pelicula1 = new Pelicula(); pelicula1.setTitulo("El Resplandor"); pelicula1.setTipo("Drama"); unMetodo(pelicula1); System.out.println(pelicula1.getTipo()); } { public static void unMetodo(Pelicula referencia) referencia.setTipo("Terror"); } }
35 Que muestra el programa?

FIN

36

Sign up to vote on this title
UsefulNot useful