• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Tema 1 2_poo
 

Tema 1 2_poo

on

  • 614 views

tarea de poo

tarea de poo

Statistics

Views

Total Views
614
Views on SlideShare
590
Embed Views
24

Actions

Likes
0
Downloads
24
Comments
0

1 Embed 24

http://edgartopicosii.blogspot.com 24

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tema 1 2_poo Tema 1 2_poo Presentation Transcript

    • 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.