Professional Documents
Culture Documents
Programacion Procedimiental
Programa:
Secuencia de instrucciones que describen la solucion Conjunto de llamadas a funciones
Programa:
Conjunto de objetos que se relacionan entre si, Comunicandose" a traves de mensajes.
Abstraccin
Visin simplificada de una realidad
Enfocarse en lo esencial.
Abstraccin
Qu es un objeto?
Un objeto es una abstraccin de un conjunto de cosas del mundo real de tal forma que: Todos los elementos del conjunto (las instancias) tienen las mismas caractersticas. Todas las instancias estn sujetas a y conforman las mismas reglas.
Mundo Real Software
Abstraccin
Estas caractersticas pueden ser usadas en forma independiente, pero juntas se complementan.
Clasificacin
Vehculo
Animal
Clases y Objetos
Class Template
Objetos
Clase
Es la plantilla que describe a un conjunto de objeto, con los mismos
atributos (variables) metodos (funciones) relaciones
Un objeto es una instancia de una clase. Los objetos creados a partir de una clase,
Tienen una estructura idntica, Pero identidad propia
Clase
Clase --> TDA
Ejemplo de Clase
Java UML
Alumno - nombre: : String - domicilio: String +Alumno (n:String, d:String) +setNombre(n:String):void +getNombre():String
Instancia
Una instancia es un objeto creado a partir
de una clase.
Instancia
Alumno
- nombre: : String - domicilio: String +Alumno (n:String, d:String) +setNombre(n:String):void +getNombre():String
Creacin de instancias u objetos a partir de la clase Alumno:
Alumno alumno1 = new Alumno(Juan Perez, Las Peas); Alumno alumno2 = new Alumno(Abel Garcia, Los ceibos); Alumno alumno3 = new Alumno(Jose Lopez, Centenario);
alumno1: Alumno nombre = Juan Perez domicilio = Las Peas alumno2: Alumno nombre = Abel Garca domicilio = Los ceibos alumno3: Alumno nombre = Jose Lopez domicilio = Centenario
Constructor
Mtodo especial con el mismo nombre de la clase. Es llamado automticamente cuando un objeto de una clase es creado. Se encarga inicializar las variables del objeto. Puede tomar argumentos pero no pueden retornar un valor. Se puede tener ms de un constructor en una clase.
Constructor
Permite instanciar objetos de la clase
Alumno - nombre: : String - domicilio: String +Alumno (n:String, d:String) +setNombre(n:String):void +getNombre():String
alumno1 = new Alumno(Juan Perez, Las Peas); alumno2 = new Alumno(Abel Garcia, Los Ceibos);
Ejemplo de Constructor
public class Count { private int count; public Count( ) { count = 0; } public Count (int number) { count = number; } } Count contador = new Count( );
ES UN: Herencia
Es un mecanismo para compartir atributos y mtodos entre clases. Por la herencia se forman jerarquas de clases (superclases y subclases). Las subclases heredan los atributos y mtodos de las superclases. Relacin es un. Superclase Permite la reutilizacin de cdigo.
Subclase
Ejemplo
Mamfero
# colorOjo:String + getcolorOjo():String
Perro
# frecLadrido:int + ladrar():void
Gato
# frecMaullido:int +maullar():void
PastorAlemn
+ esAleman():void
Poodle
+ esFrances():void
Ejemplo de Herencia
Herencia
ANTES
Auto maxFuel maxNroDePasajeros modelo velocidad acelerar() desacelerar() doblarAIzq() doblarADcha() Avion maxAltitud maxFuel maxNroDePasajeros velocidad nroDeMotores
DESPUES
Vehiculo maxFuel maxNroDePasajeros velocidad acelerar() desacelerar() superclase
subclases
Herencia
UML
Vehiculo
Java
public class Vehiculo { } public class Auto extends Vehiculo{ }
Auto
Avion
Tipos de Herencia
Simple: una clase (clase hija) puede heredar de otra clase
(tener una clase padre). Mltiple: una clase (clase hija) puede heredar de otras clases padres (tener varias clases padres).
Herencia Multiple
Herencia Mltiple
Problema de ambigedad: unVehiculoAnfibio.Desplazarse();
Los lenguajes ofrecen mecanismos para deshacer la ambigedad (en C++ => unVehiculoAnfibio.VehiculoTerrestre::Desplazarse()).
Tipos de Clases
Clases abstractas
No pueden ser instanciadas. Usadas solamente como superclases. Organizan caractersticas comunes a algunas clases y especifican una interfaz comn para todas sus subclases. Pueden tener mtodos abstractos (mtodos sin implementacin).
Pueden ser instanciadas. Tiene un comportamiento especfico. Implementan los mtodos abstractos que heredan de las clases abstractas.
Clases finales
Clases especiales que no pueden tener descendencia. Unicamente permiten instanciar objetos.
Clases abstractas
Figura {Abstracto}
public class Circulo extends Figura{ ... } public class Rectangulo extends Figura{ ... }
Polimorfismo
Significa que la misma operacin puede comportarse diferente en clases distintas. El polimorfismo est muy ligado a la herencia. Distintas instancias del mismo tipo interpretan el mismo mensaje en diferentes formas. El polimorfismo requiere enlace dinmico
Enlace dinmico: la llamada se resuelve en tiempo de ejecucin. Enlace esttico: la llamada se resuelve en tiempo de compilacin
Ejemplo de Polimorfismo
Atributo: Figura Geomtrica area Mtodo: obtenerArea
Rectangulo
Circulo
Atributo: radio
Atributos:
longitud ancho Mtodos: Rectangulo obtenerArea
Mtodos:
Circulo obtenerArea
Ejemplo de Polimorfismo
Mtodo abstracto
mtodo abstracto
Circulo +obtenerArea()
Rectangulo +obtenerArea()
mtodo concreto
Method Overriding
La clase hija puede extender o redefinir (override) el comportamiento de la clase padre. El Method Overriding (sobremontado de mtodo), permite implementar un mismo mtodo de una superclase, en una subclase. Hay dos clases de overriding.
Redefinicin: Se reemplaza el mtodo de la superclase totalmente. Extensin: Se aumenta el mtodo original con un comportamiento adicional.
Method Overriding
Method Overloading
El Method Overloading (sobrecarga de mtodo) permite implementar polimorfismo. El Method Overloading permite al programador definir varios mtodos con el mismo nombre, pero con diferentes parmetros (cantidad y/o tipo). Ejmp:
public void getCab( ); public void getCab(String cabbieName); public void getCab(int numberOfPassengers);
Method-call Binding
Method-call binding es conectar la llamada a un mtodo con el cuerpo de un mtodo. Existen dos tipos de Method-call Binding:
Early Binding (Unin Temprana).
Cuando el binding es hecho por el compilador se lo conoce como early binding. El early binding, es el nico tipo de binding que tienen los lenguajes estructurados.
Method-call Binding
square
draw_1
shape user
draw request
circle
draw_2
Circulo +obtenerArea()
Rectangulo +obtenerArea()
Interfases
La interfase es el medio de comunicacin entre objetos. Una interface especifica un contrato que una clase o componente debe ofrecer. La interfase de un objeto est conformada por los atributos y mtodos pblicos. Los objetos deben definir las interfases de todos los servicios que desean prestar.
Encapsulamiento
Es la propiedad que tienen los objetos, de contener tanto datos como mtodos, los cuales pueden manipular o cambiar estos datos. Consiste en separar los aspectos externos de un objeto (que pueden ser accedidos desde otros objetos) de los detalles internos de implementacin del mismo.
Encapsulamiento
Es importante porque mediante esta propiedad, los objetos, tienen el control necesario, de la integridad de los datos contenidos en estos. Facilidad de mantenimiento y depuracin de los programas. Los clientes de una clase slo conocen la interfaz de la misma, es decir, conocen los prototipos de las operaciones pero no cmo estn implementadas. Por tanto, si la implementacin de una clase vara, y la interfaz contina siendo la misma, no es necesario cambiar el cdigo de los clientes.
Mensajes
Objeto A Objeto B
Datos
Datos
Datos
Datos Datos
Datos
Datos Datos
Mensajes
f:Factura i:Item a:Articulo obtenerPrecio() obtenerCosto()
calcularPrecio()
public class Item { public obtenerPrecio(){ a.obtenerCosto(); this.calcularPrecio(); } private calcularPrecio(){ ... } }
public class Payroll{ String name; Person P = new Person(); P.setName(Joe); //.ms cdigo name = P.getName(); }
public abstract class FiguraGeometrica { protected double area; public abstract double obtenerArea(); } public class Circulo extends FiguraGeometrica { double radio; public Circulo (double r) { radio = r; } public double obtenerArea() { area = 3.14 * (radio * radio); return (area); } } Ejercicio: Implementar la clase Rectngulo