+ All Categories
Home > Documents > Facultad de Ingeniería Universidad de Buenos...

Facultad de Ingeniería Universidad de Buenos...

Date post: 24-Jan-2021
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
51
Facultad de Ingeniería Universidad de Buenos Aires 75-08 Sistemas Operativos Lic. Ing. Osvaldo Clúa
Transcript
Page 1: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

Facultad de IngenieríaUniversidad de Buenos 

Aires

75-08 Sistemas OperativosLic. Ing. Osvaldo Clúa

Page 2: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -2-

Programa

• 1) Introducción. Tipos Abstractos de Datos. Ventajas de la orientación a objetos.

• 2) Clases y Objetos. Conceptos generales. Visibilidad Herencia. Modelado de la herencia.

• 3) Herencia múltiple e Interfaces. Polimorfismo. .

Page 3: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -3-

El paradigma de la Orientación a Objetos

● Las metodologías estructuradas no resolvieron el cuello de botella del mantenimiento.– Las técnicas clásicas son orientadas a operaciones o

a datos, pero no a ambos.– Esto se ve en los menús clásicos de los sistemas de

esa época.– La orientación a objetos da igual importancia a los

datos que a las operaciones.

Page 4: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -4-

Definición de las operaciones

● Ingeniería de código– Pre y Post condición con sus formalismos ( Hoare o Floyd).– Variantes e invariantes de algoritmos.– Cifras de mérito (acople y cohesión).

● Para el usuario de la operación solo es necesario conocer los estados anterior y posterior de la operación.

• Los algoritmos deben permanecer ocultos al usuario de la operación.

Page 5: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -5-

Definición de los Datos● Encapsulado de datos

– Se conoce su diagrama de estados.– Se conoce el efecto de cada operación en función de su

diagrama de estados.● Ingeniería de Código

– Estructuras estáticas, dinámicas y genéricas.– Persistencia, seguridad, coherencia.

• El usuario no precisa conocer los detalles de la implementación de los datos.

Page 6: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -6-

Tipo Abstracto de Datos (TAD)

● Estructura y operaciones en la misma construcción de programación.– Una parte expuesta: operaciones y cambios de

estados producidos.– Una parte oculta: la implementación de datos y

operaciones.● Este principio se conoce como Ocultamiento

de la Información (Information hiding - Parnas).

Page 7: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -7-

Operaciones sobre los TAD

● Las operaciones sobre un TAD pueden clasificarse como:– Construcción de una nueva instancia del TAD– Producción de un TAD a partir de otro u otros.– Mutación del estado de un TAD.– Observación del estado de un TAD.

● Es buena ingeniería de código que las operaciones sean de un solo tipo.

Page 8: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -8-

Invariantes de Representación

• El comportamiento de un TAD es independiente de su representación (Invariante de representación).

● Su desarrollo histórico abarca:– Built-in types (integer, boolean ...) El compilador

controla las operaciones que se pueden hacer sobre ellos.

– User defined types (Wirth). Permiten al programador definir tipos en función de tipos ya existentes.

– Abstract Data Types. Juntan la definición del tipo con sus operaciones en una misma construcción del lenguaje.

Page 9: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -9-

Función de Abstracción

● El conjunto de valores que debe soportar un tipo de datos se conoce como valores abstractos.

● Sigue un desarrollo histórico paralelo al del invariante de representación. (Built-in, User defined, TAD).

• La función de abstracción relaciona los valores abstractos con los reales de TAD.

Page 10: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -10-

Especificación de un TAD

● Invariante de Representación: Indica si un TAD está bien formado.– Permite un razonamiento modular acerca del TAD.

– Conviene escribirlo, aunque sea informalmente. De los contrario deben leerse todas las operaciones para entender un TAD.

● Función de representación: indica como un determinado valor del TAD se corresponde con un valor abstracto.– A veces el esfuerzo de escribirla no ayuda demasiado al diseño.

Page 11: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -11-

Orientación a Objetos● Hay Orientación a Objetos cuando hay:

– Tipos Abstractos de Datos.– Herencia.– Polimorfismo.

● Se llaman Basados en Objetos los lenguajes que solo soportan los TAD.

● Los TAD se llaman Clases.● Las Instancias de las Clases se llaman Objetos.● Las operaciones se llaman Métodos.

Page 12: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -12-

Relaciones entre las Clases

• Uso de un objeto de una clase (servidor) por parte de un objeto de otra clase (cliente).

• Composición (agregación) de clases para crear una nueva. (has_a).

• Generalización o especialización de las clases. (is_a).

Page 13: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -13-

Relación de Uso● El diagrama de la Relación de Uso puede tener una

forma de:– Árbol.– Capas.– Ciclos.

● Conocer un diagrama de uso permite:– Hacer un análisis de Impacto de un cambio.– Identificar oportunidades de reuso de código.– Determinar un orden de construcción.

Page 14: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -14-

Reuso

● Se pensó que la cohesión funcional permitiría el reuso. Sin embargo los módulos del modelo clásico no eran autocontenidos.

● La cohesión de un TAD u Objeto bien diseñado se conoce como Informacional.

● Si el TAD modela correctamente todos los aspectos de una entidad (real o abstracta) y oculta los detalles de su implementación, hace mas fácil su reuso.

Page 15: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -15-

Casos de Reuso

● Puede haber Reuso del Diseño, Reuso de la Implementación o situaciones intermedias. – Design patterns: Los patrones son soluciones generales a

problemas recurrentes. Dan una guía para el desarrollo de las relaciones entre objetos.

– Architecture: describe la estructura de la estructura de una aplicación. Da una guía para el desarrollo global de la aplicación.

– Framework: Se reusa la lógica de control de un diseño. El desarrollador solo se ocupa de las operaciones específicas del producto a construir (hot spots).

– Component: se basa en desarrollar clases que luego se integren a una Arquitectura por medio de un Framework.

Page 16: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -16-

Atributos y métodos

Atributos, Variables de Instancia, Miembros de datos, campos.

Class Fraccion {private int numerador;private int denominador;public Fraccion (int num, int den){…}public int getNum(){…}public int getDen(){…}

}

Métodos, Miembros funcionales, Mensajes.

Page 17: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -17-

Atributos

● Conservan el estado de un objeto.– Variables de instancia (cambian con cada

objeto).– Variables de clase (tienen el mismo valor para

todos los objetos).– Convención Java: se escriben con la primer

letra en minúscula.– Constantes.

● Convención Java: se escriben todo en mayúscula.

Page 18: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -18-

Atributos

• s t a t i c– Es la forma de

indicar que se mantiene su valor para toda la clase.

• f i n a l– Es la forma de

indicar que es inmutable.

Public class Ejemplo{

private int variable_de_instancia;

private static int variable_de_clase;

public static final int CONSTANTE=360;

. . .

}

Page 19: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -19-

Métodos

● Son los que hacen las operaciones.– Construcción de un Objeto.– Mutación del estado de un objeto.– Producción de un Objeto a partir de otro.– Observación del estado de un objeto.

● Pueden ser de instancia o de clase.● Se invocan en el ambiente de un objeto o de

una clase.

Page 20: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -20-

public class Fraccion{

private int num;

private int den;

Fraccion (int n, int d){

num=n;den=d;}

public int getNum(){return num;}

public int getDen(){return den;}

public void setNum(int n){

num=n;}

public void setDen(int n){

den=n;}

public boolean esMayor

(Fraccion f){..}

public static Fraccion max

(Fraccion f1, Fraccion f2)

{..}

private int static mcd (int u, int d)

{..}

public void simplificar(){..};

}

Métodos

Constructor

Observador

Mutador

Productor

Page 21: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -21-

public class PruebaFraccion{

public statc void main

(String args a[]) {

Fraccion f1;

f1=new Fraccion (5,2);

Fraccion f2=new Fraccion (6,8);

Fraccion f3;

System.out.println (“f1=“+

f1.getNum()+”/”+f1.getDen());

f1.setNum(7);

f2.simplificar();

f3=Fraccion.max(f1,f2);

}

}

Invocación de métodosEl método por donde comienza la ejecución.

Construcción de f1.

Observación de estado.

Mutación de estado.

Producción de f3.

Page 22: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -22-

Ambiente de miembros(Scope)

● Los miembros deben denotar el ambiente de un objeto.

● Si se trata de un elemento estático deben incluir el ambiente de la clase.

Fraccion f1=new Fraccion (6,8);

Fraccion f2=new Fraccion (7,5);

int i1= f1.getNum();

Fraccion f2= Fraccion.max(f1,f2);

getNum no es estático, se invoca en ambiente de f1.

max es estático, se invoca en ambiente de Fraccion.

Page 23: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -23-

Visibilidad de los miembros● Privados, solo pueden

usarse en esa clase.● Públicos, los puede

usar cualquiera

● ¿Debe ser privado o público?– Invariante de

representación– Función de

abstracción.

public class Fraccion{

private int num;

private int den;

Fraccion (int n, int d){

num=n;den=d;}

public int getNum(){return num;}

public int getDen(){return den;}

public void setNum(int n){

num=n;}

public void setDen(int n){

den=n;}

public boolean esMayor

(Fraccion f){..}

public static Fraccion max

(Fraccion f1, Fraccion f2)

{..}

private int static mcd (int u, int d)

{..}

public void simplificar(){..};

}

Page 24: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -24-

Refinando la clase Fracción● Función de Abstracción:

– Números racionales.● Invariante de representación

– 1/2=2/4=3/6 etc. …

public class Fraccion{

private int num;

private int den;

Fraccion (int n, int d){

num=n;den=d; simplificar()}

public int getNum(){return num;}

public int getDen(){return den;}

public void setNum(int n){

num=n; simplificar();}

public void setDen(int n){

den=n; simplificar();}

public boolean esMayor

(Fraccion f){..}

public static Fraccion max

(Fraccion f1, Fraccion f2)

{..}

private int static mcd (int u, int d)

{..}

private void simplificar(){..};

}

•Se oculta la representación.

•Se asegura la coherencia de la representación.

•¿Este método pertenece a ésta clase?

•¿Se puede pasar de punto flotante a fracción?

Page 25: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -25-

Herencia● Es una forma de obtener nuevas clases a

partir de clases existentes.– Super Clase y Sub Clase.

● Una SubClase adquiere todos los métodos de la SuperClase (herencia).

● Puede cambiar alguno de los métodos heredados (especialización).

● Puede agregar nuevos campos o métodos (extensión).

Page 26: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -26-

Herencia en UML

● UML es un lenguaje de modelado.– La herencia es una

característica de la Programación OO.

– UML no modela la herencia sino la relación que le da origen.

SubClase.

SuperClase.

Relación is_a (generalización).

Page 27: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -27-

Herencia en Javapublic class Fraccion{

private int num;private int den;Fraccion (int n, int d){..} . . .}

public class FraccionOper extends Fraccion {

FraccionOper(){super();}

public FraccionOper mas(Fraccion f){. . .}

}

•SuperClase.

•La SubClase extiende a la SuperClase.

•Se llama al constructor de la SuperClase.

•Toda FraccionOper es una Fraccion.

Page 28: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -28-

Uso de la Herencia en Javapublic class PruebaFraccionOp{

public statc void main (String args a[]) {Fraccion f1=new Fraccion (5,2);FraccionOper f2=new FraccionOper (7,8);FraccionOper f3=new FraccionOper(5,4);

FraccionOper f4=f2.mas(f3);

FraccionOper f5=f2.mas(f1);

FraccionOper f6=f1.mas(f2);}

}

Suma de dos FraccionOper.

Suma de una FraccionOper

con una Fracción.

Una Fracción NO PUEDE invocar al método mas.

Page 29: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -29-

Visibilidad de los miembros

• p r o t e c t e d indica que el miembro es accesible solo a los de su clase y a sus descendientes.

● Las clases se agrupan en paquetes (p a c k a g e )● Si no se pone modificador de visibilidad, los

miembros son accesibles a todas las clases del mismo paquete.

● Los paquetes se definen durante el Design Workflow del USDP (Unified Software Development Process ).

Page 30: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -30-

Sobre la noción de herencia

● Es un ejemplo de programación incremental.– R=P+ΔR.– ΔR puede extender, heredar, cancelar o

especializar propiedades de P.● Es una forma de reusar código.● Modela una relación entre clases.

Page 31: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -31-

¿Qué relaciones se modelan usando la herencia?

● Especialización/generalización.– Relación is_a.

● Ejemplificación/clasificación.– Relación is_a pero abstracta.

● Descomposición/Agregación.– Relación has_a.

● Agrupamiento/individualización.– Relación is_a arbitraria.

Page 32: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -32-

Relaciones modeladas por Herencia

Vehículo

Bicicleta Automóvil

Autos vendidos

Auto de María

Auto de Luis

Auto

Motor Chasis

Generalización/

Especialización

Clasificación/

Ejemplificación

Agregación/

Descomposición

Auto

Auto de María

Autos azules

Autos blancos

Auto de Luis

Auto de Alberto

Agrupamiento/

Individualización

Page 33: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -33-

Clases y el USDP

● El USDP se compone de un conjunto de Actividades (Workflow).

● Las clases se “extraen” durante el Analysis Workflow.– Essential classes.– Boundary classes.– Control classes.

● El Analysis Workflow produce un diagrama de clases que realizan los casos de uso.

Page 34: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -34-

Herencia y paquetes en el USDP

● El diagrama se refina durante el Design Workflow.

● Se introducen las restricciones del lenguaje de programación.– Se decide que relaciones se modelan con la

herencia.– Se asignan formatos y métodos a las clases.– Se definen la visibilidad y la partición en

paquetes.

Page 35: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -35-

Herencia múltiple.

C l a s s F r a c c i o n {p r i v a t e i n t n u me r a d o r ;p r i v a t e i n t d e n o mi n a d o r ;p u b l i c F r a c c i o n ( i n t n u m, i n t d e n ) …{ }p u b l i c i n t g e t N u m( ) …{ }p u b l i c i n t g e t D e n ( ) …{ }

}

C l a s s O r d e n a b l e {p u b l i c b o o l e a n e s Ma y o r ( O r d e n a b l e a ) …{ }p u b l i c b o o l e a n e s I g u a l ( O r d e n a b l e a ) …{ }

}

C l a s s O p e r a b l e {p u b l i c O p e r a b l e ma s ( O p e r a b l e a ) …{ }p u b l i c O p e r a b l e me n o s ( O p e r a b l e a ) …{ }

}

•¿De que clase conviene hacer descender a la clase Fraccion?– Ambas candidatas son útiles (sirven de base para algoritmos).– Java no admite herencia múltiple.– ¿Cómo definir un método si aún no se conoce su implementación?– ¿Cómo usar solo una parte de una clase?

Page 36: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -36-

Herencia y Contratos

● El diseño indica que relación debe modelar la herencia.

● La SuperClase puede usarse para obligar a las subclases a implementar un método (Contrato).– Pero aun no se conoce como implementar el

método.– Se pueden hacer entonces clases abstractas

(Java).

Page 37: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -37-

Clases Abstractas (Java)

● Se diseñan únicamente para ser SuperClases.● Pueden tener métodos enunciados y sin programar

(métodos abstractos).● Pueden tener variables de instancia y métodos

programados.● No pueden instanciarse (no existen objetos

derivados de clases abstractas).● Pueden usarse como parámetros.● Las SubClases deben programar los métodos

abstractos.

Page 38: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -38-

Uso de Clases Abstractas (Java)p u b l i c a b s t r a c t c l a s s O r d e n a b l e {

p u b l i c b o o l e a n e s Ma y o r ( O r d e n a b l e a ) ;

p u b l i c b o o l e a n e s I g u a l ( O r d e n a b l e a ) ;

}

public class Fraccion extends Ordenable{

...

boolean esMayor(Ordenable a){

. . . }

oolean esIgual(Ordenable a){

. . .}

}

public class Util {

...

static Ordenable max

(Ordenable a, Ordenable b){

if ( a.esMayor(b) )

return a;

else return b;

}

. . .

Se obliga a programar estos métodos.

Se pueden usar en algoritmos.

public abstract class Ordenable{

boolean esMayor(Ordenable a);

boolean esIgual(Ordenable a);

}

No es un productor!!

Fraccion f3= (Fraccion) Util.max (new Fraccion (3,4), new Fraccion (7,8))

Page 39: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -39-

Interface (Java- Ada 2005)

● Es un contrato para programar ciertos métodos.

● Las clases pueden implementar una o varias interfaces.

● No pueden tener datos ni métodos programados ni static.

● Es una solución al problema de la falta herencia múltiple en Java.

Page 40: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -40-

Uso de las Interfaces (Java)p u b l i c a b s t r a c t c l a s s O r d e n a b l e {

p u b l i c b o o l e a n e s Ma y o r ( O r d e n a b l e a ) ;

p u b l i c b o o l e a n e s I g u a l ( O r d e n a b l e a ) ;

}

p u b l i c c l a s s F r a c c i o n i mp l e me n t s O r d e n a b l e {

. . .

b o o l e a n e s Ma y o r ( O r d e n a b l e a ) {

. . . }

o o l e a n e s I g u a l ( O r d e n a b l e a ) {

. . . }

}

p u b l i c I n t e r f a c e O r d e n a b l e {

b o o l e a n e s Ma y o r ( O r d e n a b l e a ) ;

b o o l e a n e s I g u a l ( O r d e n a b l e a ) ;

}

p u b l i c c l a s s U t i l {

. . .

s t a t i c O r d e n a b l e ma x

( O r d e n a b l e a , O r d e n a b l e b ) {

i f ( a . e s Ma y o r ( b ) )

r e t u r n a ;

e l s e r e t u r n b ;

}

. . .

Se obliga a programar estos métodos.

Se pueden usar en algoritmos.

No es un productor!!

F r a c c i o n f 3 = ( F r a c c i o n ) U t i l . ma x ( n e w F r a c c i o n ( 3 , 4 ) , n e w F r a c c i o n ( 7 , 8 ) )

Page 41: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -41-

¿Interfaces o Clases Abstractas?(Java – Ada 2005)

● Una interface:– Define el borde de comunicación entre dos clases.– Se refiere a una abstracción que una entidad provee de sí

misma al exterior.● Las distintas clases que implementan una interface

comparten un protocolo.● Las clases abstractas:

– Permiten implementaciones parciales.– Permiten poner la funcionalidad en el nivel

correspondiente.● Se decide en el Design Workflow del USDP.

Page 42: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -42-

Polimorfismo (Java)

c l a s s P o l i A e x t e n d s P o l i {

S t r i n g u n o ( ) {

r e t u r n “ u n o ( ) d e P o l i A “ ; }

}

C l a s s P o l i {

S t r i n g u n o ( ) {

r e t u r n “ u n o ( ) d e P o l i “ ; }

c l a s s P o l i B e x t e n d s P o l i {

S t r i n g u n o ( ) {

r e t u r n “ u n o ( ) d e P o l i B “ ; }

}

c l a s s U t i l {

. . .

s t a t i c S t r i n g u s o ( P o l i p ) {

r e t u r n p . u n o ( ) ; }

}

. . .

S y s t e m. o u t . p r i n t l n (

U t i l . u s o ( n e w P o l i A ( ) ) ;

¿Cuál es el usado?

Page 43: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -43-

Polimorfismo (C++)#include <iostream>using namespace std;

class Poli{

public:

virtual void a(){cout<<"Metodo a(), Poli"<<endl;}

};

class Uno :public Poli {

public: void a(){cout<<"Metodo a(), Uno"<<endl;}

};

class Dos: public Poli{

public: void a(){cout<<"Metodo a() de Dos"<<endl;}

};

class Uso {

public:

void usa(Poli &x){x.a();}

};

int main(){

Poli p;

Uno u; Dos d;

Uso s;

cout<<"s.usa(p) ";

s.usa(p); cout<<"s.usa(u) "; s.usa(u);

cout<<"s.usa(d) "; s.usa(d);

}

Page 44: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -44-

Polimorfismo (Ada 95) apackage polis is

type Poli is tagged recordnull;end record;

procedure a(p:Poli);

type Uno is new Poli withrecord null;end record;

procedure a (u:Uno);

type Dos is new Poli withrecord null;end record;

procedure a (d:Dos);end polis;

with Ada.Text_IO, Ada.Integer_Text_IO;use Ada.Text_IO, Ada.Integer_Text_IO;

package body polis isprocedure a(p:Poli) isbegin

put_line("Metodo a(p) de Poli");end;procedure a(u:Uno) isbegin

put_line("Metodo a(u) de Uno");end;procedure a(d:Dos) isbegin

put_line("Metodo a(d) de Dos");end;

end polis;

Page 45: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -45-

Polimorfismo (Ada 95) bwith Ada.Text_IO, Ada.Integer_Text_IO,polis;use Ada.Text_IO, Ada.Integer_Text_IO,polis;

procedure prueba is procedure usa(p: Poli'class) is -- ~~~~~ esto implica polimorfismobegin

a(p);-- en ada 2005 p.a;end usa;

p:Poli;u:Uno;d:Dos;begin

put ("usa(p:Poli) ");usa(p);put ("usa(u:Uno) ");usa(u);put ("usa(d:Dos) ");usa(d);

end prueba;

Page 46: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -46-

Polimorfismo

● Principio de sustitución de Liskov.– Una clase puede reemplazarse por sus

SubClases sin alterar su corrección.● La habilidad de objetos de diferente clase

de responder a métodos del mismo nombre de acuerdo a su clase.

● El programador no tiene porque conocer el tipo de objeto por anticipado.– Run-time binding.

Page 47: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -47-

Polimorfismo en los Lenguajes

● En Java todo método es polimórfico.● En C++ los métodos polimórficos deben

declararse como virtual.● En Ada los parámetros polimórficos deben

marcarse como de ámbito de clase.● Estas diferencias se deben a la

implementación de estos lenguajes.

Page 48: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -48-

Polimorfismo vs Programación Genérica

● Polimorfismo– Uso algorítmico de

sub-clases intercambiables

– Conocido como polimorfismo de subtipos.

● Programación Genérica– Acepta argumentos de

diversos tipos no relacionados.

– Conocida como polimorfismo paramétrico.

Page 49: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -49-

Orientación a Objetos

● TAD+Herencia+Polimorfismo.● Con estos elementos pueden diseñarse:

– Programas extensibles brindando “clases bases” que el programador extiende (hereda), reusando código y datos.

– Algoritmos con “hot spots” donde el programador pone sus clases, reusando la lógica.

– Clases pre-diseñadas con protocolos de comunicación ya establecidos que el programador integra a su código.

– “Documentos” donde el programador puede desplegar sus objetos e interactuar con otros.

Page 50: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -50-

Bibliografía

● Una cartilla de referencia rápida a UML se encuentra en http://www.holub.com/goodies/uml/

● El libro mas sucinto de Java es “Java Precisely” de Peter Sestoft, MIT Press, 2005. Hay edición anterior en la web.

● El Unified Developing Process, USDP o Unified Process está detallado en “Software Engineering, an Object-oriented Perspective” de Eric Braude, Wiley, 2001.

● El principio de sustitución de Liskov está en http://reports-archive.adm.cs.cmu.edu/anon/1999/CMU-CS-99-156.ps

● Una introducción a Ada puede encontrarse en http://www.adaic.org/learn/index.html

Page 51: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2006-1c/OOIntro.pdf · 2006. 10. 16. · 75-08 Sistemas Operativos FIUBA Lic. Prof. Osvaldo Clúa

75-08 Sistemas OperativosLic. Prof. Osvaldo ClúaFIUBA -51-

Bibliografía

● El tratamiento semi-formal es del curso 6-170 del MIT “Laboratory in Software Engineering, Fall 2005” online en el OCW del MIT http://ocw.mit.edu/

● La introducción al reuso y la orientación a objetos es del libro de Stephen Schach “Object Oriented & Classical Software Engineering” 6TH Edition, Mc Graw Hill


Recommended