Professional Documents
Culture Documents
ORIENTADO A OBJETOS
Resumen Se estudiara el paradigma de la orientacin a objetos y como se emplea en Java.
Definicin filosfica: Es una entidad que se puede reconocer. Para la tecnologa de objetos : Es una abstraccin de un objeto del mundo real. En trminos de negocios: Es una entidad relevante al dominio del negocio. En trminos de software: Es una estructura que asocia datos y funciones. Algunos ejemplos de objetos en POO son: Cliente, Factura, Contrato, Pelcula. Un Cliente tiene un nombre, direccin, crdito. Un Cliente podra alquilar una pelcula, pagar una factura, devolver una pelcula. Los objetos realizan operaciones. Un objeto es til si tiene alguna funcin o comportamiento en el sistema. Cada comportamiento se denomina operacin. Objeto: Mi lapicero azul Operacin: Escribir Objeto: El cajero automtico P5 Operacin: Entregar dinero.
Los objetos tiene valores. Los objetos conocen cual es su estado actual. Cada conocimiento del objeto se denomina atributo. Objeto: Mi lapicero azul Atributo: Cantidad de tinta Objeto: El cajero automtico P5 Atributo: Disponible en soles.
Objeto: Mi lapicero azul Operacin: Apuntar una pizarra. Atributos: Longitud, Marca.
2.2. Encapsulamiento
El encapsulamiento oculta como las cosas funcionan dentro de un objeto Solo nos comunicamos con el objeto a travs sus mtodos Los mtodos son una interfaz que permite ignorar como estn implementados. No es posible evadir el encapsulamiento en OO El cajero automtico P5 es un objeto que entrega dinero. El cajero encapsula todas las operaciones a los tarjetahabientes. Evadir este encapsulamiento es un robo al cajero. Ejercicio Complete con operaciones y atributos lo siguiente: Objeto Operaciones Cajero automtico P5 Universidad Computadora Auto de carreras DVD Satlite
Atributos
Cliente o Transmisor
Mensaje getEdad()
Radar en Tierra
Nueva posicin
Ejemplos: El radar en tierra monitorea el satlite. El satlite es monitoreado por el radar en tierra. Un cliente tiene una cuenta de ahorros. La cuenta de ahorros pertenece a un cliente.
2.4. Clases
Una clase es una molde para crear objetos. Para definir una clase se tiene que indicar las operaciones y atributos Los objetos son instancias de la clase. Cuando se cree un cajero automtico P3 no se requiere indicar sus operaciones y atributos. Solo se requiere indicar a que clase pertenece. Clase Atributos Mtodos Cliente int edad String nombre String direccin cambiarDireccion() Pelcula String titulo double precio String categoria cambiarPrecio()
Identificacin de clases Reconocer una estructura y comportamiento comunes entre varios objetos. Objeto Operaciones Atributos
Escribir Recargar
Lapicero rojo
Ejercicio
A que clase pertenecen estos dos objetos? Clases y Objetos. Las clases son definiciones estticas que nos permite entender todos los objetos de esa clase. Los objetos son entidades dinmicas que existen en el mundo real y en simulaciones del mundo real.
2.5. Herencia
Entre diferentes clases pueden haber similitudes La herencia es una relacin entre clases donde una es padre de otra. Las propiedades comunes definen la superclase. Clase padre. Las subclases heredan estas propiedades. Clase hijo. Un objeto hijo es un-tipo-de una superclase. Un Helicptero es un tipo de Nave Area.
Nave Area
Jumbo
Helicptero Globo
Dirigible
2.6. Polimorfismo
Significa que la misma operacin se realiza en las clases de diferente forma. Estas operaciones tienen el mismo significado, comportamiento. Internamente cada operacin se realiza de diferente forma.
Abordar pasajeros
Barco
Tren
Helicptero
Ejemplos
Enviar calcularIntereses a objetos como: Cuenta de Ahorros, Cuenta CTS, Cuenta Corriente. En java se representa como: cuenta.calcularIntereses();
2.7.1. Paquetes
Un paquete es un contenedor (agrupador) de clases que estan relacionadas lgicamente. Un paquete tiene sus clases en un mismo directorio Varias clases pueden tener el mismo nombre pero en diferente paquete. Para el problema de los Paquete: Directorio: alquileres se encuentran las alquiler C:/alquiler clases: Clases: Archivos en C:/alquiler Clase Pelicula alquiler.Pelcula Pelcula.java Clase Contrato Contrato.java Clase Cliente alquiler.Contrato Cliente.java alquiler.Cliente
SI HEREDA SI public SI
HEREDA
SI
NO
El Padrino Drama
2.Los objetos se crean con el operador new. Pelcula Pelcula pelicula1 = new Pelcula(); pelicula2 = new Pelcula();
3.El operador new realiza las siguientes acciones: - Separa memoria para el nuevo objeto - Invoca el mtodo de inicio de la clase llamado constructor. - Retorna la referencia a un nuevo objeto.
Pelicula pelicula1 =
new Pelicula();
pelicula1
La Strada Drama
0 i
null
int j = 3;
Dias de Radio
null)
2.8. Mtodos
Un mtodo es equivalente a una funcin o subrutina de otros lenguajes. Los mtodos solo se definen dentro de una clase. modificador tipoDeRetorno nombreMetodo (ListaDeArgumentos) {
2.8.1. Argumentos
En la definicin del mtodo se indica el tipo y el nombre de los argumentos del mtodo. public void setTipo (String nuevoTipo) { tipo = nuevoTipo; }
Si el mtodo tiene varios argumentos, estos se separan por comas.
public void setDatos (String nuevoTitulo, String nuevoTipo) { tipo = nuevoTipo; titulo = nuevoTitulo; } Si el mtodo no tiene argumentos, se deja solo los parntesis public void mostrarDetalles() { System.out.println("El titulo es "+titulo); System.out.println("El tipo es "+tipo); }
Laboratorio
Pelicula.java public class Pelicula { private String titulo,tipo; //... public String getTipo () { return tipo; } public String 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"); } } }
2.9. Encapsulamiento
1. Las variables de instancia de una clase deberan ser declaradas como privadas Solo un mtodo debera acceder a las variables privadas. No se debe acceder a las variables de instancia directamente, sino a travs de un mtodo. Pelicula pelicula1 = new Pelicula(); if (pelicula1.titulo.equals("Los doce del patibulo")) { pelicula1.setTipo("Accion"); } Cual de estas lneas no cumple con el encapsulamiento? 2. Cdigo de una clase.
Laboratorio
Pelicula.java public class Pelicula { private String titulo; private String tipo; //metodos settitulo,settipo,gettipo y gettipo, tostring 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; } }
Laboratorio
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 argumento) { if (argumento < 0 || argumento > 100) { argumento = 0; System.out.println(argumento); } } } Que valores muestra el programa anterior? 2. Cuando se pasa como argumento un objeto referencia, no se genera copia. El argumento referencia al objeto original.
Laboratorio
TestReferencias.java public class TestReferencias { public static void main (String[] args)
{
public class Pelicula { private float precio; public void setPrecio() { precio = 3.50; } public void setPrecio(float nuevoPrecio) { precio = nuevoPrecio; } }
En forma explicita se puede indicar un valor inicial. private String tipo = "Drama"; Un constructor provee una iniciacin de variables de instancia mas compleja.
3.1.3. Constructores
Para una adecuada iniciacin de variables de instancia, la clase debe tener un constructor. Un constructor se invoca automticamente cuando se crea un objeto. Se declaran de forma pblica. Tiene el mismo nombre que la clase. No retorna ningn valor. Si no se codifica un constructor, el compilador crea uno por defecto sin argumentos que solo inicia las variables de instancia. Laboratorio Pelicula.java //crea la clase pelicula
public class Pelicula { private String titulo; private String tipo = "Drama"; public Pelicula() { titulo = "Pelicula sin definir."; } public Pelicula(String nuevoTitulo) { titulo = nuevoTitulo; } public Pelicula(String nuevoTitulo, String nuevoTipo) { titulo = nuevoTitulo; tipo = nuevoTipo; } public String getTitulo() { return titulo; } public String getTipo() { return tipo; } }
TestConstructores.java // aqui llama llama a la clases pelicula
public class TestConstructores { public static void main (String[] args) { Pelicula pelicula1 = new Pelicula(); Pelicula pelicula2 = new Pelicula("La lista de Schindler."); Pelicula pelicula3 = new Pelicula("El dormilon.","Comedia");
public class Pelicula { private String titulo; public void setTitulo(String titulo) { this.titulo = titulo; } }
Se puede compartir cdigo entre constructores usando la referencia this. Un constructor invoca a otro pasandole los argumento que requiere. Laboratorio Pelicula.java
public class Pelicula { private String titulo; private String tipo; public Pelicula() { this("Pelicula sin definir"); } public Pelicula (String titulo) { this.titulo = titulo; } public String getTitulo() { return titulo; } }
TestThis.java public class TestThis { public static void main (String[] args) { Pelicula pelicula1 = new Pelicula(); Pelicula pelicula2 = new Pelicula("Todo sobre mi madre"); System.out.println(pelicula1.getTitulo()); System.out.println(pelicula2.getTitulo()); }
public class Pelicula { private static float precio = 3.50f; private String titulo; public Pelicula(String titulo) { this.titulo = titulo; } public String getTitulo() { return titulo; } public static void setPrecio(float nuevoPrecio) { precio = nuevoPrecio; } public static float getPrecio() { return precio; } } TestStatic2.java public class TestStatic2 { public static void main (String[] args) { Pelicula.setPrecio(3.98f); Pelicula oscar = new Pelicula("Ben Hur"); System.out.println(oscar.getPrecio()); oscar.setPrecio(4.98f); System.out.println(Pelicula.getPrecio()); } } Indique que resultados que se obtienen, ?