Tema 2. El paradigma  Orientado a Objetos. Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros en Informática Universidad de Málaga http://www.lcc.uma.es/ ~amg/ISE/Tema2.zip
Programa El Paradigma Orientado a Objetos Historia e introducción. Conceptos básicos. Aplicación de los conceptos en lenguajes de programación y métodos de análisis.
Evolución Histórica A B S T R A C C I Ó N O P E R A C I O N A L A B S T R A C C I Ó N D E D A T O S Lenguajes Máquina / Ensamblador Cód.Inst.Simb. Macros Id = Dir Mem. Manip.Total de Datos FORTRAN Subrutinas Funciones Id. Simb. Tipos Oper. restring. PASCAL Anidamiento Subprogramas Registros Tipos definidos Gest. Din. Mem MODULA-2 ADA Encapsulam. Octult. Inform. Espec - Impl Tipo Abstracto de Datos Lenguajes Orientados a Objetos Objetos Métodos Mensajes
Evolución Histórica COMPONENTES A B S T R A C C I Ó N O P E R A C I O N A L A B S T R A C C I Ó N D E D A T O S Lenguajes Máquina / Ensamblador Cód.Inst.Simb. Macros Id = Dir Mem. Manip.Total de Datos FORTRAN Subrutinas Funciones Id. Simb. Tipos Oper. restring . PASCAL Anidamiento Subprogramas Registros Tipos definidos Gest. Din. Mem MODULA-2 ADA Encapsulam. Octult. Inform. Espec - Impl Tipo Abstracto de Datos Lenguajes Orientados a Objetos Métodos Mensajes Objetos Eventos Invocación remota Componentes
Introducción Razones para la crisis del software ¿Hacer un lápiz es difícil? ¿La industria del software se parece más a ... la fabricación de armas? la fontanería? Tecnología / objetivo.
Programa El Paradigma Orientado a Objetos Historia e introducción. Conceptos básicos. Aplicación de los conceptos en lenguajes de programación y métodos de análisis.
¿Qué es la Orientación a Objetos? El concepto surge en los lenguajes de programación Se organiza el software como una colección de objetos discretos que encapsulan Estructuras de Datos y Comportamiento. Un sistema OO funciona mediante la colaboración entre los objetos que se comunican entre sí. El concepto se extiende a los métodos de análisis y diseño Se utilizan los objetos del mundo real como base para construir modelos Los elementos que forman los sistemas del mundo real se corresponden con objetos software
Las clases y los objetos están en todas partes Vehículo Punto Figura Animal (1,3) (2,2) (2,1) (5,2.5) Platero:Animal
Conceptos básicos: CLASES y OBJETOS CLASE Atributos Operaciones Comportamiento Lavadora marca modelo capacidad: integer ... Programar PonerRopa CerrarPuerta Lavar OBJETO  Valores de los atributos Estado Identidad ID:Lavadora marca=“Lapava” capacidad=5 estado=centrifugando
Conceptos básicos: PASO DE MENSAJES Invocación de métodos Medio de colaboración entre objetos :MandoADistancia :Televisor Conectar() Canal(4)
Conceptos básicos: ENCAPSULACIÓN Ocultación de detalles Concepto de Interfaz Independencia Vol+ Sens3 => Vol++ => DAC31.out=2.1 => Amp27.gain=1.3 => OSD, Pref, ... Sens => VolUp => => Settings.vol++ => DAC23.out=0.7 => Amp02.gain=1.7 => OSD, Pref, ...
Conceptos básicos: HERENCIA Generalización / Especialización Los objetos “heredan” las características de la clase. Las clases pueden heredar de otras clases. Extensión. Restricción. Modificación. Utilidad: Abstracción. Reutilización. Hormiga Plancha Televisor Electrodoméstico tensión consumo Conectar Desconectar Lavadora capacidad numCanales vapor
Conceptos básicos: POLIMORFISMO Ej: Operación “Abrir” Permite al modelador hablar el lenguaje del cliente. Evita asignar identificadores artificiosos para distinguir las operaciones. Contribuye a la reutilización de código. Ej: Operación “Enchufar” Puerta Plazo Puerto Cuenta Abrir() Abrir() Abrir() Abrir() TomaDeCorriente tensión Enchufar(e:Electrodoméstico)
Conceptos básicos: ASOCIACION Modela la relación entre objetos (necesaria para que se comuniquen y colaboren) Asociación-Clase / Enlace-Objeto Tipos básicos: Asociación Herencia Agregación / Composición  (agregación fuerte) Coche Motor Árbol Hoja
Hasta aquí deberíamos tener claro ... Cómo surge el enfoque OO. Cómo funciona un sistema OO. El concepto y la representación de: Asociación Agregación Herencia Polimorfismo Paso de mensajes Encapsulación Clase y Objeto Atributos Operaciones Comportamiento Identidad Interfaz
Programa El Paradigma Orientado a Objetos Historia e introducción. Conceptos básicos. Aplicación de los conceptos en lenguajes de programación y métodos de análisis.
Clases y  Objetos CLASE = MODULO + TIPO Criterio de Modularización Estado + Comportamiento Entidad estática (en general) OBJETO = Instancia de una CLASE Objeto (Clase)    Valor (Tipo) Identidad Entidad dinámica Cada objeto tiene su propio estado Objetos de una clase comparten su comportamiento
Métodos : definen el comportamiento de una clase Invocación de métodos:  Paso de Mensajes obj.mens(args)   mens(obj,args) Métodos y Mensajes Punto x,y: float trasladar(a,b) distancia(pto) Estado e identidad Comportamiento trasladar(1,-1) P1:Punto X=2 Y=2
Clases Estructuras que encapsulan  datos  y  funciones class  Punto {  public : Punto(); float  x,y; void  trasladar( float ,  float ); void  cambiar_x( float  a){x=a;}; void  cambiar_y( float  b){y=b;}; float  distancia(Punto); }; “ Punto.hpp” VARIABLES DE ESTADO (DATOS MIEMBRO) MÉTODOS (FUNCIONES MIEMBRO) CONSTRUCTOR
Colaboración entre objetos Los objetos (clases) colaboran para resolver problemas. La forma en que los objetos (clases) colaboran puede ser muy variada: Asociación simple Herencia Agregación Composición ...
Agregación de objetos class  Segmento { private Punto   inicio,final; public  Segmento(Punto p) {inicio = Punto(); final = p;} public float  longitud() {return inicio.distancia(final);} public void  trasladar( float  a, float  b) {inicio.trasladar(a,b);    final.trasladar(a,b);} }
Composición de objetos public class  Habitacion   { private int  numHabitacion; private int  numCamas; // declaración de métodos ... } public class  Hotel1   { Habitacion h1; Habitacion h2; // resto declaraciones ... h1 =  new  Habitacion( 222 ); }
Construcción y Destrucción Diferentes mecanismos para la creación y la eliminación de objetos, dependiendo del lenguaje. Construcción de objetos (  reservar memoria ): Constructores (C++, Eiffel, Java) Métodos de clase (Smalltalk) Eliminación de objetos (  liberar memoria ): Destructores (C++) Recolección automática de memoria – garbage collection - (Smalltalk, Eiffel, Java) Detalles
Construcción y Destrucción //C++ class  Jugador { int  salud; int  fuerza; Jugador();  // constructor - no tiene tipo Jugador(int s, int f); // constructor alternativo void  mover(); void  atacar(); }; Jugador:: ~ Jugador() { salud = 0; fuerza = 0; }
Construcción y Destrucción JAVA class   Circulo  extends   Elipse  { // extensión, restricción, modificación ; public Circulo () { ...  };   public Circulo (int radio) { ... };   } ... Circulo c1; ... c1 =  new  Circulo(4);
Construcción y Destrucción Smalltalk Vehiculo  subc lass :  #Coche // extensión, restricción, modificación ; ... MiCoche  := C oche  new:  ’ABC-1234’
Herencia Posibilidad de reutilizar código Algo más que incluir ficheros o importar módulos Distintos tipos de herencia: simple / múltiple de implementación/de interfaz  Limitaciones Problemas Detalles Figura Polígono Elipse Círculo Irregular Regular
Herencia JAVA class   Elipse  extends   Figura  { // extensión, restricción, modificación } C++ class  Elipse :  public  Figura { // extensión, restricción, modificación   } Smalltalk Figura  subc lass :  #Elipse ” extensión, restricción, modificación” Python c lass   Elipse (Figura) ” extensión, restricción, modificación”
Herencia Extensión y Reutilización de código Una clase derivada hereda el comportamiento de su clase padre Redefinición de métodos Clases abstractas Herencia múltiple / Herencia repetida
Polimorfismo Una variable puede referirse a objetos de una clase distinta de la que se ha declarado Tipo Dinámico vs. Tipo Estático Polimorfismo de objetos / de mensajes Restricción en base a la herencia puntero a objeto en C++
Encapsulación Las clases ocultan los detalles de realización de los métodos. Los “usuarios” (los objetos que invocan esos métodos) conocen el interfaz y la semántica. No tienen que preocuparse de los detalles. El concepto de interfaz puede ampliarse. Contribuye a la reusabilidad del código.
Al fin del tema 2 debemos tener claro ... Cómo surge y evoluciona el concepto OO. Cuáles son los elementos y características básicas de este enfoque. Cómo se plasma el enfoque OO en los lenguajes de programación. Las particularidades que se introducen sobre los conceptos básicos al aplicarlos en sistemas reales
A continuación ... El Lenguaje de Modelado Unificado . Introduciremos UML, y veremos cómo realizar Modelado estructural Modelado del comportamiento Modelado arquitectónico Preparación: Tema 3.   El Lenguaje de Modelado Unificado . http://polaris.lcc.uma.es/ ~amg/ISE/Tema3.zip Caps. 1,3,4,5. Schmuller.  Teach yourself UML in 24 hours. Cap, 1. “Los 3 amigos” ,  The Unified Modeling Language .   Probar/Jugar con  Rational Rose y MagicDraw UML.

Tema 1 2_poo

  • 1.
    Tema 2. Elparadigma Orientado a Objetos. Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros en Informática Universidad de Málaga http://www.lcc.uma.es/ ~amg/ISE/Tema2.zip
  • 2.
    Programa El ParadigmaOrientado a Objetos Historia e introducción. Conceptos básicos. Aplicación de los conceptos en lenguajes de programación y métodos de análisis.
  • 3.
    Evolución Histórica AB S T R A C C I Ó N O P E R A C I O N A L A B S T R A C C I Ó N D E D A T O S Lenguajes Máquina / Ensamblador Cód.Inst.Simb. Macros Id = Dir Mem. Manip.Total de Datos FORTRAN Subrutinas Funciones Id. Simb. Tipos Oper. restring. PASCAL Anidamiento Subprogramas Registros Tipos definidos Gest. Din. Mem MODULA-2 ADA Encapsulam. Octult. Inform. Espec - Impl Tipo Abstracto de Datos Lenguajes Orientados a Objetos Objetos Métodos Mensajes
  • 4.
    Evolución Histórica COMPONENTESA B S T R A C C I Ó N O P E R A C I O N A L A B S T R A C C I Ó N D E D A T O S Lenguajes Máquina / Ensamblador Cód.Inst.Simb. Macros Id = Dir Mem. Manip.Total de Datos FORTRAN Subrutinas Funciones Id. Simb. Tipos Oper. restring . PASCAL Anidamiento Subprogramas Registros Tipos definidos Gest. Din. Mem MODULA-2 ADA Encapsulam. Octult. Inform. Espec - Impl Tipo Abstracto de Datos Lenguajes Orientados a Objetos Métodos Mensajes Objetos Eventos Invocación remota Componentes
  • 5.
    Introducción Razones parala crisis del software ¿Hacer un lápiz es difícil? ¿La industria del software se parece más a ... la fabricación de armas? la fontanería? Tecnología / objetivo.
  • 6.
    Programa El ParadigmaOrientado a Objetos Historia e introducción. Conceptos básicos. Aplicación de los conceptos en lenguajes de programación y métodos de análisis.
  • 7.
    ¿Qué es laOrientación a Objetos? El concepto surge en los lenguajes de programación Se organiza el software como una colección de objetos discretos que encapsulan Estructuras de Datos y Comportamiento. Un sistema OO funciona mediante la colaboración entre los objetos que se comunican entre sí. El concepto se extiende a los métodos de análisis y diseño Se utilizan los objetos del mundo real como base para construir modelos Los elementos que forman los sistemas del mundo real se corresponden con objetos software
  • 8.
    Las clases ylos objetos están en todas partes Vehículo Punto Figura Animal (1,3) (2,2) (2,1) (5,2.5) Platero:Animal
  • 9.
    Conceptos básicos: CLASESy OBJETOS CLASE Atributos Operaciones Comportamiento Lavadora marca modelo capacidad: integer ... Programar PonerRopa CerrarPuerta Lavar OBJETO Valores de los atributos Estado Identidad ID:Lavadora marca=“Lapava” capacidad=5 estado=centrifugando
  • 10.
    Conceptos básicos: PASODE MENSAJES Invocación de métodos Medio de colaboración entre objetos :MandoADistancia :Televisor Conectar() Canal(4)
  • 11.
    Conceptos básicos: ENCAPSULACIÓNOcultación de detalles Concepto de Interfaz Independencia Vol+ Sens3 => Vol++ => DAC31.out=2.1 => Amp27.gain=1.3 => OSD, Pref, ... Sens => VolUp => => Settings.vol++ => DAC23.out=0.7 => Amp02.gain=1.7 => OSD, Pref, ...
  • 12.
    Conceptos básicos: HERENCIAGeneralización / Especialización Los objetos “heredan” las características de la clase. Las clases pueden heredar de otras clases. Extensión. Restricción. Modificación. Utilidad: Abstracción. Reutilización. Hormiga Plancha Televisor Electrodoméstico tensión consumo Conectar Desconectar Lavadora capacidad numCanales vapor
  • 13.
    Conceptos básicos: POLIMORFISMOEj: Operación “Abrir” Permite al modelador hablar el lenguaje del cliente. Evita asignar identificadores artificiosos para distinguir las operaciones. Contribuye a la reutilización de código. Ej: Operación “Enchufar” Puerta Plazo Puerto Cuenta Abrir() Abrir() Abrir() Abrir() TomaDeCorriente tensión Enchufar(e:Electrodoméstico)
  • 14.
    Conceptos básicos: ASOCIACIONModela la relación entre objetos (necesaria para que se comuniquen y colaboren) Asociación-Clase / Enlace-Objeto Tipos básicos: Asociación Herencia Agregación / Composición (agregación fuerte) Coche Motor Árbol Hoja
  • 15.
    Hasta aquí deberíamostener claro ... Cómo surge el enfoque OO. Cómo funciona un sistema OO. El concepto y la representación de: Asociación Agregación Herencia Polimorfismo Paso de mensajes Encapsulación Clase y Objeto Atributos Operaciones Comportamiento Identidad Interfaz
  • 16.
    Programa El ParadigmaOrientado a Objetos Historia e introducción. Conceptos básicos. Aplicación de los conceptos en lenguajes de programación y métodos de análisis.
  • 17.
    Clases y Objetos CLASE = MODULO + TIPO Criterio de Modularización Estado + Comportamiento Entidad estática (en general) OBJETO = Instancia de una CLASE Objeto (Clase)  Valor (Tipo) Identidad Entidad dinámica Cada objeto tiene su propio estado Objetos de una clase comparten su comportamiento
  • 18.
    Métodos : definenel comportamiento de una clase Invocación de métodos: Paso de Mensajes obj.mens(args) mens(obj,args) Métodos y Mensajes Punto x,y: float trasladar(a,b) distancia(pto) Estado e identidad Comportamiento trasladar(1,-1) P1:Punto X=2 Y=2
  • 19.
    Clases Estructuras queencapsulan datos y funciones class Punto { public : Punto(); float x,y; void trasladar( float , float ); void cambiar_x( float a){x=a;}; void cambiar_y( float b){y=b;}; float distancia(Punto); }; “ Punto.hpp” VARIABLES DE ESTADO (DATOS MIEMBRO) MÉTODOS (FUNCIONES MIEMBRO) CONSTRUCTOR
  • 20.
    Colaboración entre objetosLos objetos (clases) colaboran para resolver problemas. La forma en que los objetos (clases) colaboran puede ser muy variada: Asociación simple Herencia Agregación Composición ...
  • 21.
    Agregación de objetosclass Segmento { private Punto inicio,final; public Segmento(Punto p) {inicio = Punto(); final = p;} public float longitud() {return inicio.distancia(final);} public void trasladar( float a, float b) {inicio.trasladar(a,b); final.trasladar(a,b);} }
  • 22.
    Composición de objetospublic class Habitacion { private int numHabitacion; private int numCamas; // declaración de métodos ... } public class Hotel1 { Habitacion h1; Habitacion h2; // resto declaraciones ... h1 = new Habitacion( 222 ); }
  • 23.
    Construcción y DestrucciónDiferentes mecanismos para la creación y la eliminación de objetos, dependiendo del lenguaje. Construcción de objetos (  reservar memoria ): Constructores (C++, Eiffel, Java) Métodos de clase (Smalltalk) Eliminación de objetos (  liberar memoria ): Destructores (C++) Recolección automática de memoria – garbage collection - (Smalltalk, Eiffel, Java) Detalles
  • 24.
    Construcción y Destrucción//C++ class Jugador { int salud; int fuerza; Jugador(); // constructor - no tiene tipo Jugador(int s, int f); // constructor alternativo void mover(); void atacar(); }; Jugador:: ~ Jugador() { salud = 0; fuerza = 0; }
  • 25.
    Construcción y DestrucciónJAVA class Circulo extends Elipse { // extensión, restricción, modificación ; public Circulo () { ... }; public Circulo (int radio) { ... }; } ... Circulo c1; ... c1 = new Circulo(4);
  • 26.
    Construcción y DestrucciónSmalltalk Vehiculo subc lass : #Coche // extensión, restricción, modificación ; ... MiCoche := C oche new: ’ABC-1234’
  • 27.
    Herencia Posibilidad dereutilizar código Algo más que incluir ficheros o importar módulos Distintos tipos de herencia: simple / múltiple de implementación/de interfaz Limitaciones Problemas Detalles Figura Polígono Elipse Círculo Irregular Regular
  • 28.
    Herencia JAVA class Elipse extends Figura { // extensión, restricción, modificación } C++ class Elipse : public Figura { // extensión, restricción, modificación } Smalltalk Figura subc lass : #Elipse ” extensión, restricción, modificación” Python c lass Elipse (Figura) ” extensión, restricción, modificación”
  • 29.
    Herencia Extensión yReutilización de código Una clase derivada hereda el comportamiento de su clase padre Redefinición de métodos Clases abstractas Herencia múltiple / Herencia repetida
  • 30.
    Polimorfismo Una variablepuede referirse a objetos de una clase distinta de la que se ha declarado Tipo Dinámico vs. Tipo Estático Polimorfismo de objetos / de mensajes Restricción en base a la herencia puntero a objeto en C++
  • 31.
    Encapsulación Las clasesocultan los detalles de realización de los métodos. Los “usuarios” (los objetos que invocan esos métodos) conocen el interfaz y la semántica. No tienen que preocuparse de los detalles. El concepto de interfaz puede ampliarse. Contribuye a la reusabilidad del código.
  • 32.
    Al fin deltema 2 debemos tener claro ... Cómo surge y evoluciona el concepto OO. Cuáles son los elementos y características básicas de este enfoque. Cómo se plasma el enfoque OO en los lenguajes de programación. Las particularidades que se introducen sobre los conceptos básicos al aplicarlos en sistemas reales
  • 33.
    A continuación ...El Lenguaje de Modelado Unificado . Introduciremos UML, y veremos cómo realizar Modelado estructural Modelado del comportamiento Modelado arquitectónico Preparación: Tema 3. El Lenguaje de Modelado Unificado . http://polaris.lcc.uma.es/ ~amg/ISE/Tema3.zip Caps. 1,3,4,5. Schmuller. Teach yourself UML in 24 hours. Cap, 1. “Los 3 amigos” , The Unified Modeling Language . Probar/Jugar con Rational Rose y MagicDraw UML.