Professional Documents
Culture Documents
Objetos
Qu es un objeto?
Una entidad run-time Una unidad de ecapsulamiento
Estado <- Encapsulamiento de datos va variables internas Comportamiento < Encapsulamiento de procedimientos va cdigo interno
Objetos: Terminologa
Los objetos encapsulan atributos/campos permitiendo acceso a ellas nicamente a travs de los mtodos
Nombre de la Clase ------------------------------ Atributo1 Atributo2 ------------------------------ Metodo1 Metodo2 Metodo3
Se puede permitir o restringir su acceso desde afuera Pueden ser Pblicos o Privados
Atributos Privados: dato auxiliar a la implementacin ej. int: PosicinDeUltimoElementoEnVector Atributos Pblico: Dato relevante al problema que el objeto resuelve Pblico: ej. int: NumeroDeElementos. NumeroDeElementos. (en la prctica, se utilizan mtodos observadores) Mtodo Privado: Comportamiento auxiliar. Privado: ej. hayEspacio(): bool Mtodo Pblico: Comportamiento relevante al problema. Pblico: ej. apilar(nat): bool
3
Clases
Una clase es una entidad design-time (*) Representa una clasificacin de objetos Define el comportamiento y atributos de un grupo de objetos con estructura y comportamientos similar
(*) No es estrctamente verdad, depende el lenguaje. Pero sirve como aproximacin incial estrctamente
Dice() { generator = new Random(); Random(); roll(); roll(); } void roll() { //Rolls dice by random choice from 1-6 roll() top = generator.nextInt(6)+1; generator. nextInt(6)+1; } int getTop() { getTop() return top; top; } //Returns number on top side of dice
int getBottom() { //Returns number on bottom of dice getBottom() return 7-getTop(); 7-getTop(); } }
7
Instanciacin
El proceso de creacin de un objeto a partir de la definicin de una clase Se realiza mediante el llamado a un constructor que tiene cmo parmetros todos los datos necesarios para construir el objeto
Car colour:String model:String fuelCapacity:int start():void stop():void move(direction:String):void Car(colour: String, model: String, fuelCapacity:int)
8
myCar a 4 Stack
Heap
Car colour:String model:String fuelCapacity:int start():void stop():void move(direction:String):void Car(colour: String, model: String, fuelCapacity:int) <<instanceOf>>
myCar:Car colour= naranja model= Fiat 600 fuelCapacity=45 start():void stop():void move(direction:String):void
10
Herencia
Permite definir a partir de una clase, otras clases relacionadas que supongan una:
Especializacin de la clase dada. (Ej. la clase Automvil es una especializacin de la clase Vehculo) Generalizacin de la clase dada. (La clase vehculo es una generalizacin de la clase Automvil)
Si definimos la clase automvil a partir de la clase vehculo se dice: dice: automvil" hereda las variables y mtodos de "vehculo" automvil" extiende de "vehculo" automvil" es subclase de "vehculo" "vehculo" es superclase de automvil"
12
Una lmpara ajustable extiende una lmpara con la posibilidad de bajar la intensidad de luz.
13
Notar: Overriding
14
Polimorfismo
Polimorfismo: Muchas Formas La posibilidad de utilizar una misma definicin con mltiples tipos distintos de datos En programacin orientada a objetos, el polimorfismo permite trabajar con colecciones de objetos que son de distinto tipo de manera uniforme.
15
Polymorphism
public class Room { private Lamp miLampara; public Room(Lamp l) { miLampara = l; } public void strobe(int pulses) { for (int i=0; i<= pulses; i++) { miLampara.print(); miLampara.pressSwitch(); miLampara.print(); miLampara.pressSwitch(); } } }
Room
public void discoteque() { Room r = new Room(new AdjLamp(false)); r.strobe(40); Que mtodo print() } se ejecuta?
16
Document
+print():void
MSWordDocument
PSDocument
PDFDocument
17
Clase Abstractas
abstract public class Document { protected String _name; public String getName() { return _name; } abstract public void print(); }
Las clases abstractas no pueden utilizarse para instanciar objetos Sirven para
Introducir tipos (ya veremos para que) Reutilizar cdigo Forzar subclases a proveer implementaciones
18
Printing Queue
public class PrintQueue { private LinkedList _docList = new LinkedList(); public void add(Document d) { docList.add(d); } public void print() { while (!_docList.isEmpty()) { Document d = (Document) _docList.removeFirst(); d.print(); } } PrintQueue p = new PrintQueue(); p.add(new MSWordDocument(...); p.add(new PDFDocument(...)); p.add(new PSDocument(...)); p.print();
20
Interfaces
Una interfaz es una coleccin de operaciones que representan servicios ofrecidos por una clase o componente. Por definicin, todas estas operaciones tendrn una visibilidad pblica. La interfaz especifica algo similar a un contrato que la clase se compromete a respetar. La clase realiza (o suministra una realizacin de) una o varias interfaces.
21
uses user
interface { }
realised (implemented)
class
class
22
23
24
25
26