Está en la página 1de 33

Tema 2. El paradigma Orientado a Objetos.

Departamento de Lenguajes y Ciencias de la Computacin E.T.S. de Ingenieros en Informtica Universidad de Mlaga http://www.lcc.uma.es/~amg/ISE/Tema2.zip

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Programa

 El

Paradigma Orientado a Objetos

Historia e introduccin. Conceptos bsicos. Aplicacin de los conceptos en lenguajes de programacin y mtodos de anlisis.

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

A B S T R A C C I N O P E R A C I O N A L

Evolucin Histrica
Cd.Inst.Simb. Macros Subrutinas Funciones Anidamiento Subprogramas Encapsulam. Octult. Inform. Espec - Impl Mtodos Mensajes Lenguajes Mquina / Ensamblador FORTRAN Id = Dir Mem. Manip.Total de Datos Id. Simb. Tipos Oper. restring. Registros Tipos definidos Gest. Din. Mem Tipo Abstracto de Datos Objetos

A B S T R A C C I N D E D A T O S

PASCAL

MODULA-2 ADA Lenguajes Orientados a Objetos

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

A B S T R A C C I N O P E R A C I O N A L

Evolucin Histrica
Cd.Inst.Simb. Macros Subrutinas Funciones Anidamiento Subprogramas Encapsulam. Octult. Inform. Espec - Impl

Lenguajes Mquina / Ensamblador FORTRAN

Id = Dir Mem. Manip.Total de Datos Id. Simb. Tipos Oper. restring. Registros Tipos definidos Gest. Din. Mem Tipo Abstracto de Datos

A B S T R A C C I N D E D A T O S

PASCAL MODULA-2 ADA Lenguajes Orientados a Objetos

Mtodos Mensajes

Objetos

Eventos Invocacin remota

COMPONENTES
Componentes

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Introduccin

 Razones

para la crisis del software

Hacer un lpiz es difcil? La industria del software se parece ms a ...


la fabricacin de armas? la fontanera?

 Tecnologa

/ objetivo.
5

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Programa

 El

Paradigma Orientado a Objetos

Historia e introduccin. Conceptos bsicos. Aplicacin de los conceptos en lenguajes de programacin y mtodos de anlisis.

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Qu es la Orientacin a Objetos?


El concepto surge en los lenguajes de programacin


Se organiza el software como una coleccin de objetos discretos que encapsulan
Estructuras de Datos y Comportamiento.

Un sistema OO funciona mediante la colaboracin entre los objetos que se comunican entre s.


El concepto se extiende a los mtodos de anlisis y diseo


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

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Las clases y los objetos estn en todas partes


Vehculo Platero:Animal Animal

Punto Figura (1,3) (2,2) (2,1)


Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga 8

(5,2.5)

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Conceptos bsicos: CLASES y OBJETOS




CLASE
Atributos Operaciones Comportamiento

Lavadora marca modelo capacidad: integer ... Programar PonerRopa CerrarPuerta Lavar ID:Lavadora marca=Lapava capacidad=5 estado=centrifugando
9

OBJETO
Valores de los atributos Estado Identidad

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Conceptos bsicos: PASO DE MENSAJES


 

Invocacin de mtodos Medio de colaboracin entre objetos

Conectar() :MandoADistancia Canal(4) :Televisor

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

10

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Conceptos bsicos: ENCAPSULACIN


  

Ocultacin de detalles Concepto de Interfaz Independencia

Sens => => Vol++ Sens3 VolUp => =>=> DAC31.out=2.1 Settings.vol++ =>=> Amp27.gain=1.3 DAC23.out=0.7 =>=> OSD, Pref, ... Amp02.gain=1.7 => OSD, Pref, ...
Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga 11

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Conceptos bsicos: HERENCIA


Generalizacin / Especializacin  Los objetos heredan las caractersticas de la clase.  Las clases pueden heredar de otras clases.


Extensin. Restriccin. Modificacin.




Utilidad:
Abstraccin. Reutilizacin.
Lavadora Hormiga capacidad

Electrodomstico tensin consumo Conectar Desconectar

Televisor numCanales

Plancha vapor

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

12

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Conceptos bsicos: POLIMORFISMO




Ej: Operacin Abrir


Puerta Abrir() Cuenta Abrir() Puerto Abrir() Plazo Abrir()

Permite al modelador hablar el lenguaje del cliente.  Evita asignar identificadores artificiosos para distinguir las operaciones.  Contribuye a la reutilizacin de cdigo.  Ej: Operacin Enchufar TomaDeCorriente

tensin Enchufar(e:Electrodomstico)

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

13

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Conceptos bsicos: ASOCIACION


  

Modela la relacin entre objetos (necesaria para que se comuniquen y colaboren) Asociacin-Clase / Enlace-Objeto Tipos bsicos:
Asociacin Herencia Agregacin / Composicin (agregacin fuerte)
Coche Motor rbol Hoja

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

14

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Hasta aqu deberamos tener claro ...


  

Cmo surge el enfoque OO. Cmo funciona un sistema OO. El concepto y la representacin de:


Clase y Objeto
Atributos Operaciones Comportamiento Identidad

Asociacin
Agregacin Herencia

  

Interfaz

Polimorfismo Paso de mensajes Encapsulacin


15

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Programa

 El

Paradigma Orientado a Objetos

Historia e introduccin. Conceptos bsicos. Aplicacin de los conceptos en lenguajes de programacin y mtodos de anlisis.

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

16

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Clases y Objetos


CLASE = MODULO + TIPO


Criterio de Modularizacin Estado + Comportamiento Entidad esttica (en general)

OBJETO = Instancia de una CLASE Objeto (Clase) } Valor (Tipo)


Identidad Entidad dinmica Cada objeto tiene su propio estado Objetos de una clase comparten su comportamiento
17

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Mtodos y Mensajes


Mtodos: definen el comportamiento de una clase


Punto x,y: float trasladar(a,b) distancia(pto)

Estado e identidad Comportamiento

Invocacin de mtodos: Paso de Mensajes


obj.mens(args)

trasladar(1,-1)

P1:Punto X=2 Y=2

mens(obj,args)

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

18

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Clases


Estructuras que encapsulan datos y funciones


CONSTRUCTOR

class Punto VARIABLES DE ESTADO { public: (DATOS MIEMBRO) 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); };
MTODOS (FUNCIONES MIEMBRO)
Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga 19

Punto.hpp

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Colaboracin entre objetos Los objetos (clases) colaboran para resolver problemas. La forma en que los objetos (clases) colaboran puede ser muy variada:
Asociacin simple Herencia Agregacin Composicin ...

 

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

20

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Agregacin 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);} }
Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga 21

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Composicin de objetos
public class Habitacion { private int numHabitacion; private int numCamas; // declaracin de mtodos ... } public class Hotel1 { Habitacion h1; Habitacion h2; // resto declaraciones ... h1 = new Habitacion( 222 ); }
Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga 22

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Construccin y Destruccin


Diferentes mecanismos para la creacin y la eliminacin de objetos, dependiendo del lenguaje. Construccin de objetos (}reservar memoria):
Constructores (C++, Eiffel, Java) Mtodos de clase (Smalltalk)

Eliminacin de objetos (}liberar memoria):


Destructores (C++) Recoleccin automtica de memoria garbage collection- (Smalltalk, Eiffel, Java)

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

Detalles

23

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Construccin y Destruccin
//C++ class Jugador { int salud; int fuerza; // constructor - no tiene tipo Jugador(); Jugador(int s, int f);// constructor alternativo void mover(); void atacar(); }; Jugador::~Jugador() { salud = 0; fuerza = 0; }
Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga 24

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Construccin y Destruccin
JAVA class Circulo extends Elipse { // extensin, restriccin, modificacin; public Circulo () { ... }; public Circulo (int radio) { ... }; } ... Circulo c1; ... c1 = new Circulo(4);
Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga 25

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Construccin y Destruccin
Smalltalk Vehiculo subclass: #Coche // extensin, restriccin, modificacin; ... MiCoche := Coche new: ABC-1234

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

26

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Herencia
  

Posibilidad de reutilizar cdigo Algo ms que incluir ficheros o importar mdulos Figura Distintos tipos de herencia:
simple / mltiple de implementacin/de interfaz

 

Limitaciones Problemas
Regular

Polgono

Elipse

Irregular

Crculo

Detalles
Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga 27

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Herencia
JAVA class Elipse extends Figura { // extensin, restriccin, modificacin } C++ class Elipse : public Figura { // extensin, restriccin, modificacin } Smalltalk Figura subclass: #Elipse extensin, restriccin, modificacin Python class Elipse (Figura) extensin, restriccin, modificacin
Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga 28

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Herencia

Extensin y Reutilizacin de cdigo  Una clase derivada hereda el comportamiento de su clase padre  Redefinicin de mtodos  Clases abstractas  Herencia mltiple / Herencia repetida


Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

29

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Polimorfismo
puntero a objeto en C++
   

Una variable puede referirse a objetos de una clase distinta de la que se ha declarado Tipo Dinmico vs. Tipo Esttico Polimorfismo de objetos / de mensajes Restriccin en base a la herencia

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

30

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Encapsulacin
 

 

Las clases ocultan los detalles de realizacin de los mtodos. Los usuarios (los objetos que invocan esos mtodos) conocen el interfaz y la semntica. No tienen que preocuparse de los detalles. El concepto de interfaz puede ampliarse. Contribuye a la reusabilidad del cdigo.

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

31

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

Al fin del tema 2 debemos tener claro ...


   

Cmo surge y evoluciona el concepto OO. Cules son los elementos y caractersticas bsicas de este enfoque. Cmo se plasma el enfoque OO en los lenguajes de programacin. Las particularidades que se introducen sobre los conceptos bsicos al aplicarlos en sistemas reales

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

32

Ingeniera del Software. Especificacin

Tema 5. El Paradigma Orientado a Objetos.

A continuacin ...


El Lenguaje de Modelado Unificado. Introduciremos UML, y veremos cmo realizar


Modelado estructural Modelado del comportamiento Modelado arquitectnico

Preparacin: 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.

Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga

33

También podría gustarte