Programación orientada a objetos Es un importante conjunto de técnicas que pueden utilizarse para el desarrollo de programas más eficiente, a la par que mejore la fiabilidad de los programas de computadora.
Objetivos: Clases y Objetos Al final de este tema, el estudiante podrá: Describir los principios básicos de orientación a objetos Definir y dar ejemplos de objetos Definir y dar ejemplos de clases Describir la relación entre clases y objetos Definir y crear el Modelo Conceptual de un sistema usando un diagrama de clases
¿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
Principios Básicos de Orientación a Objetos Orientación a Objetos Abstracción Jerarquía Modularidad Polimorfismo E ncapsulación
¿Qué es Abstracción? Es el proceso de capturar los detalles fundamentales de un objeto mientras se suprimen o ignoran otros detalles. •  Se enfatizan características comunes que  interesan •  Se ignoran otras características
La Abstracción Minimiza la Complejidad
¿Qué es Encapsulación? Es la capacidad de esconder los detalles de como funciona un objeto (la implementación), detrás de una interface •  Solo se necesita conocer la interface para poder usar el objeto •  El usuario no se ve afectado si se cambia o mejora el funcionamiento interno del objeto, mientras se mantenga la interface
Define el comportamiento de una clase u objeto que tiene dentro de él todo tipo de métodos y datos pero que solo es accesible mediante el paso de mensajes  y los datos a través de los métodos del objeto/clase.
 
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, ...
¿Que es Polimorfismo? Es la habilidad de esconder diferentes implementaciones tras una sola interface
Ejemplo2: 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. Puerta Plazo Puerto Cuenta Abrir() Abrir() Abrir() Abrir()
¿Qué es Modularidad? Es la capacidad de particionar algo complejo y difícil de manejar, en partes más sencillas y fáciles de manejar
 
¿Qué es Jerarquía?  La capacidad de manejar niveles de abstracción
 
¿Qué es Herencia?  Es la capacidad de los elementos de una jerarquía, de transmitir sus características desde los niveles mas abstractos a los más concretos
 
Herencia Uno puede hacer representaciones generales de un objeto y después relacionarlas con otros objetos, para que cada uno tenga características mas especificas Estas son las relaciones que puede tener un objeto Animal Mamífero Ovíparo Canino Felino Reptil Firulais Lassie Garfield Felix
¿Qué es un Objeto? Informalmente, un objeto representa a una entidad, ya sea física, conceptual o software
 
Una definición más formal Un objeto es un concepto, abstracción o cosa con fronteras definidas y con sentido para una aplicación Un objeto es algo que tiene: Estado Comportamiento Identidad
Un Objeto tiene Estado El estado de un objeto es una de las posibles condiciones en que un objeto puede existir El estado de un objeto normalmente cambia con el tiempo El estado de un objeto es usualmente implementado por un conjunto de propiedades llamadas atributos, mas los enlaces que el objeto pueda tener con otros objetos El estado lo establecen los valores de los atributos
 
Un objeto tiene comportamiento El comportamiento determina como un objeto actúa y reacciona. El comportamiento define la manera en la que un objeto responde a las peticiones de otros objetos. El comportamiento visible de un objeto se modela con un conjunto de mensajes a los que el puede responder Los mensajes se implementan como las operaciones del objeto.
 
Un objeto tiene identidad Cada objeto tiene una identidad única, aun si su estado en un momento dado, es idéntico al de otros objetos
 
Ejemplo: Objeto : Televisor  Atributos : Chasis, Pantalla, Antena, Color, Marca, Bocina, Sintonizador.  Comportamiento  (métodos): Encender, Apagar, Cambiar canal  Estado de un atributo : Marca=sony.  El estado es la asignación de un valor a un atributo.
¿Qué son Clases? Cuando se han identificado muchos objetos en un dominio, decimos que una clase es una abstracción que describe un grupo de objetos que tienen: •  propiedades en común (atributos) •  comportamiento en común (operaciones) •  relaciones comunes con otros objetos (asociaciones) •  semántica en común (descripción breve) Una clase es una abstracción porque: •  enfatiza características relevantes al sistema •  suprime otras características
La Relación entre Clases y Objetos Una clase en una definición abstracta de un objeto Define la estructura y comportamiento de cada objeto en la clase Sirve como una plantilla para crear objetos Un objeto es una instancia concreta de una clase •  Los objetos pueden agruparse en clases
 
Clases y Objetos
Vehículo Punto Figura Animal (1,3) (2,2) (2,1) (5,2.5) Platero:Animal
 
Ejercicio Identifique los elementos de la siguiente lista, indicando cuales son objetos y cuales son clases. En el caso de los objetos, indicar cual sería la clase a la que pertenecen. Contestador telefónico de Mario Caja de Ahorro Servidor FTP Misil nuclear Botón de llamado al ascensor Máquina de Fax del Depto. de Ventas Vehículo Espacial Ariadne Apollo XIII Fondo de contingencia de la compañía Lanzador espacial Columbus Teléfono rojo de la oficina oval de la Casa Blanca Registro de Impuestos Federales
Ejercicio 2 En la siguiente lista, identificar cuales son atributos y cuales son clases. Intente asociar los atributos con las clases a las que podrían pertenecer. Autopista Nombre Población Número Paciente Tratamiento Cantidad adeudada Enfermedad Período orbital País Coordenadas Ultima Fecha de paso Satélite
Otro ejemplo: Clasificación   Objetos Niño   Alejandro Mamá   Gloria Papá   Alexis Responsabilidades Nombre Edad Juguetes Cepillarse los dientes Avisar que tiene sueño Nombre Dormir al niño Nombre Arrancar el carro Leer el periódico Cuidar a los niños
 
El Modelo Conceptual Es el primer modelo de clases que se debe hacer y reúne las abstracciones principales (key abstractions) del sistema que se desea construir •  Es un primer intento de definir la estructura del sistema •  Se obtiene al examinar la Descripción del Problema y en entrevistas con los expertos del dominio •  Se usa como una base de entendimiento y cooperación con los expertos de dominio y / o clientes No debe incluir los detalles de las clases, solo debe identificarlas Incluye: •  Un Diccionario del Modelo •  Uno o mas Diagramas de Clases (normalmente solo uno)
Guía para encontrar clases Una clase debe capturar una y solo una abstracción principal Mala abstracción: clase Estudiante que incluye el carga académica del estudiante para el semestre Buenas abstracciones: clases separadas para Estudiante y CargaAcadémica
 
Nombrando las Clases El nombre de una clase, debe ser el sustantivo singular que mejor caracteriza la abstracción que se quiere representar con esa clase El que haya dificultad para nombrar una clase, puede ser indicio de que la abstracción que esta representa no se entiende bien o no esta bien definida Los nombres de las clases deben tomarse directamente del vocabulario del dominio
Esto significa: Se debe evitar la tendencia de tratar de dar nombres “mas representativos” a las clases que modelan cosas que ya tienen un nombre ampliamente difundido y utilizado en el dominio (eje: tratar de usar OrdenDeTrabajo en vez de Ticket) •  Las mejores fuentes para escoger nombres, son las entrevistas con los expertos del dominio y la documentación misma del dominio (que existe aparte del la que se ha creado durante el proyecto; eje. guías de operación, manuales de procedimientos, etc) •  Los principales términos, siglas, apodos, etc. del vocabulario del dominio, deben definirse e incluirse en la documentación del proyecto
Guía de Estilo para Nombrar Clases Dictar convenciones y / o estándares para dar y presentar los nombres de las clases •  Proporciona consistencia al proyecto •  Resulta en modelos y código fuente más fácil de mantener Muestra de una Guía de Estilo •  Las clases se nombran con sustantivos en singular •  Los nombre de clases comienzan con mayúscula •  El carácter de subrayado no se usa para unir palabras •  Los nombres compuestos de varias palabras se unen y la inicial de cada palabra se pone en mayúscula Ejemplos: Estudiante, Profesor, PlanDeEstudios
Definir la Semántica de la Clase Luego de nombrar la clase, debe hacerse una descripción breve y concisa de la clase (Definición de Trabajo)  Enfóquese en el propósito de la clase, no en la implementación El nombre de la clase y la descripción forman la base de un Diccionario del Modelo
Muestra del Diccionario del Modelo Nombre: Estudiante •  Definición de Trabajo : Información acerca de una persona registrada para realizar diversas actividades en la Universidad (principalmente recibir clases), con el fin de completar los cursos que conforman un Plan de Estudios Nombre: Curso •  Definición de Trabajo : Una materia ofrecida por la Universidad, que es parte de un Plan de Estudios
 
Ejercicio: Universidad Situación de análisis Suponga un día de clases en cualquier universidad de nuestro planeta y enunciemos entonces un conjunto de situaciones que se pueden dar en un intervalo de tiempo determinado: a) El estudiante Juan Hernández del grupo Inf11 de la carrera de Ingeniería Informática, se dirige hacia el edificio de aulas y en el trayecto se encuentra con la secretaria docente de su facultad (Ana González), que le solicita pase un poco más tarde a verla para confrontar sus datos personales (número de identidad permanente, fecha de nacimiento y dirección particular) con los que se encuentran registrados en la secretaría de dicha facultad. b) Poco antes de comenzar la clase de Introducción a la Programación la estudiante del grupo Inf11 Elsa Fernández, presidente de la Federación Estudiantil Universitaria (FEU) del referido grupo le informa a sus colegas de una propuesta de fechas para el desarrollo de los exámenes finales de las correspondientes asignaturas. c) Ya en la clase de Introducción a la Programación el profesor Asistente, M.C. Ernesto Pérez le comenta a los estudiantes sobre los requerimientos del proyecto de curso y la fecha de entrega del mismo. d) El también profesor Asistente, M.C. Pedro García solicita la información de los estudiantes con mejores promedios del grupo de segundo año (Inf21) y luego los de mejores resultados en la asignatura Programación I con el objetivo de seleccionar dos estudiantes para formar parte de la Casa de Software de la Facultad. e) Al Decano de la Facultad, profesor Titular, Dr. Julio Herrera, el Rector de la universidad profesor Titular, Dr. Jorge Gómez le solicita la información del número de profesores jóvenes que pertenecen a la Facultad, el criterio de profesor joven es que tenga menos de 35 años.
 
Representando Clases con UML Las clases se representan en Diagramas de Clases, que son diagramas que en un mismo plano muestran uno o mas iconos, donde cada icono representa una clase específica En UML, el icono que se utiliza para representar una clase es un rectángulo que contiene el nombre de la clase y opcionalmente 3 compartimientos
 
Compartimientos de las Clases Una clase se puede representar con 3 compartimentos o secciones La primera sección contiene el nombre de la clase La segunda sección muestra la estructura o propiedades (atributos) La tercera sección muestra el comportamiento (operaciones) El contenido de las secciones segunda y tercera puede suprimirse si no es necesario mostrarlo en el diagrama de clases Esto depende del nivel de detalle que requiera la perspectiva del diagrama Se pueden suprimir las secciones mismas
 
Representando Objetos con UML Un objeto se representa con un rectángulo que contiene el nombre del objeto, subrayado El nombre del objeto puede representarse en tres formatos distintos dependiendo de si se quiere hacer referencia a un objeto  “específico”  o a un objeto  “genérico”
 
 
La interfaz de una clase La interfaz de una clase define el tipo de peticiones (operaciones) que se le pueden hacer a objetos de esa clase ―  Describe qué hace un objeto de una clase ―  A un usuario de una clase sólo le hace falta conocer su interfaz
 
Perspectiva en los Diagramas de Clases Los diagramas de clases pueden ser desde muy abstractos hasta muy concretos, dependiendo de lo que algunos autores* llaman la “perspectiva” que se haya tomado al crearlos.  Esta perspectiva tiene una correlación directa con el flujo de trabajo en donde se producen los diagramas, y se puede clasificar así:
Perspectiva Conceptual , es la que se usa para hacer el Modelo Conceptual; sirve para modelar conceptos puros o abstracciones, como clases, sin importar como sean estas clases. Los diagramas hechos desde esta perspectiva normalmente son muy sencillos y no tienen detalle alguno mas que para nombrar las clases. Perspectiva de Especificación , es la que se usa para hacer el Modelo de Análisis. Vistas desde esta perspectiva, las clases están en el punto medio de ser abstractas y concretas; se define que es lo que deben hacer, pero no como deben hacerlo. Los diagramas aquí tienen algún grado de complejidad y detalle .
Perspectiva de Implementación , es la que se usa para hacer el Modelo de Diseño. Las clases aquí son muy concretas pues deben incluir toda la información de cómo construirlas. Los diagramas creados desde esta perspectiva son muy detallados y complejos. La perspectiva de los diagramas no es parte formal del UML, pero es una consideración importante que debe tomarse al crear y revisar los diagramas de clases.
Diagrama de Clases para el Modelo Conceptual
En Resumen Una objeto es algo que tiene estado, comportamiento e identidad El estado de un objeto es una de las posibles condiciones en las que el objeto puede existir El comportamiento determina como un objeto actúa y reacciona a peticiones de otros objetos Cada objeto tiene una identidad única, aún si su estado es idéntico al de otro objeto Una clase es una definición abstracta de un conjunto de objetos que comparten una estructura y comportamiento en común A las clases se les debe dar un nombre que mejor caracterice la abstracción que representan
Resumen El Modelo Conceptual es el primer modelo de clases que debe hacerse como parte del Análisis OO •  Reúne las abstracciones principales del sistema •  Incluye uno o mas diagramas de clases y un Diccionario del Modelo •  Se hace conjuntamente con los expertos del dominio para establecer una base de entendimiento y cooperación Las clases se representan en UML con un rectángulo que contiene el nombre de la clase y opcionalmente 3 compartimientos •  El primer compartimiento contiene el nombre de la clase •  El segundo compartimiento muestra la estructura (atributos) •  El tercer compartimiento muestra el comportamiento (operaciones)
Objeto  Estado  Comportamiento Perro  nombre, color, raza  ladrar, correr , oler Bicicleta  pedales, ruedas, manillar  frenar, acelerar, cambiar
Ejemplo: objetos presentes en un juego de ajedrez Rey 2 Reynas 2 Alfiles 4 Peones 16  (8 negros  8 blancos) Caballos 4 Torres 4 Tablero 1
Atributos de la clase Un atributo es una característica del objeto, debe tener un tipo ( entero, real, string), pueden ser específicos a un lenguaje de programación. Pueden tener diferente visibilidad:
Públicos: Se puede utilizar y visualizar fuera de la clase (se representa con un signo  más  delante del nombre) Privados: No se puede accedeer al mismo desde otras clases (se representa con un signo  menos  delante del nombre)
Protegidos: Se utiliza en notaciones de generalización y especialización para representar atributos protegidos relacionados con clases derivadas(#)
Mutables o inmutables Mutables: sus valores se pueden modificar Inmutables: sus valores no se pueden modificar
Variable de clase Un atributo puede ser definido como un atributo de ámbito de clase. Esto significa que el atributo está compartido entre todos los objetos de una cierta clase. Se debe subrayar este atributo.
Operaciones o métodos de una clase Se utilizan para manipular los atributos, o realizar alguna otra acción; son funciones a la que se llama o invoca, son interiores a la clase y se pueden aplicar sobre objetos de esa clase.
Visibilidad de los métodos + pública - privada Su sintáxis general es: Visibilidad nombre (lista-parametros): tipo-expresión-retorno + Aterrizar (velocidad: Integer, dirección:Dirección)
Otro ejemplo: De la clase Figura, el método +devolverPosición():Posición
Donde.. Lista-parámetros es una lista de parámetros formales separados por coma, especificados cada uno con la siguiente sintaxis: nombre: tipo-expresión = valor por omisión
Clase abstracta Es una clase que no tiene ningún objeto, es decir, de la cual no se pueden crear instancias (objetos). Se utiliza para heredar de ella atributos y comportamientos comunes. Se especifica poniendo la etiqueta {abstract} dentro de la banda de nombre de la clase y debajo del mismo.
Ejemplo: La clase Figura es la que contiene las características comunes a dichas figuras concretas por tanto, no tiene forma ni tiene área. Esto lo expresamos declarando Figura como una clase abstracta, declarando la función miembro área  abstract .
Las clases abstractas solamente se pueden usar como clases base para otras clases. No se pueden crear objetos pertenecientes a una clase abstracta. Sin embargo, se pueden declarar variables de dichas clases.
Figura +Diametro: Integer +Posición: Posición +Dimensiones : Integer +área()
En java: public  abstract  class Figura { protected int x; protected int y; public Figura(int x, int y) { this.x=x;  this.y=y; }  public  abstract  double area(); }
class Rectangulo extends Figura { protected double ancho, alto; public double area() {  return ancho*alto; } }
Representación de un objeto Un objeto de una clase se representa por un rectángulo con el nombre del objeto y su clase subrayada Garcia Lorca:Persona Nombre: “Federico Dirección: “Huerta Edad: 66 Leer_Nombre() Fijar_dirección()
Acceso a las responsabilidades de los objetos <objeto>.<responsabilidad> Alejandro puede acceder a su atributo nombre: Alejandro.nombre y al método CepillarseDientes() Alejandro.CepillarseDientes()
Mensajes La manera en que se comunican los objetos es a través de mensajes. Por ejemplo el niño Alejandro le avisa a su mamá Gloria que tiene sueño Alejandro.Avisar_sueño(Gloria)
 
Pregunta:  ¿Cómo el rector podría obtener la cantidad de profesores de la facultad de informática con menos de 35 años?
El objeto rector podría enviarle un mensaje al objeto informática y este responder de la siguiente forma: Jorge.SolicitudNumProf(informática) informática.CantidadProfesoresJóvenes()
Fuentes Bibliográficas: Adaptado de: Galicia, Y. Programación Avanzada. Disponible en: http://www.cs.buap.mx/~ygalicia/POO.pdf

Primeraclaseobjetos clases

  • 1.
  • 2.
    Programación orientada aobjetos Es un importante conjunto de técnicas que pueden utilizarse para el desarrollo de programas más eficiente, a la par que mejore la fiabilidad de los programas de computadora.
  • 3.
    Objetivos: Clases yObjetos Al final de este tema, el estudiante podrá: Describir los principios básicos de orientación a objetos Definir y dar ejemplos de objetos Definir y dar ejemplos de clases Describir la relación entre clases y objetos Definir y crear el Modelo Conceptual de un sistema usando un diagrama de clases
  • 4.
    ¿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
  • 5.
    Principios Básicos deOrientación a Objetos Orientación a Objetos Abstracción Jerarquía Modularidad Polimorfismo E ncapsulación
  • 6.
    ¿Qué es Abstracción?Es el proceso de capturar los detalles fundamentales de un objeto mientras se suprimen o ignoran otros detalles. • Se enfatizan características comunes que interesan • Se ignoran otras características
  • 7.
  • 8.
    ¿Qué es Encapsulación?Es la capacidad de esconder los detalles de como funciona un objeto (la implementación), detrás de una interface • Solo se necesita conocer la interface para poder usar el objeto • El usuario no se ve afectado si se cambia o mejora el funcionamiento interno del objeto, mientras se mantenga la interface
  • 9.
    Define el comportamientode una clase u objeto que tiene dentro de él todo tipo de métodos y datos pero que solo es accesible mediante el paso de mensajes y los datos a través de los métodos del objeto/clase.
  • 10.
  • 11.
    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.
    ¿Que es Polimorfismo?Es la habilidad de esconder diferentes implementaciones tras una sola interface
  • 13.
    Ejemplo2: 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. Puerta Plazo Puerto Cuenta Abrir() Abrir() Abrir() Abrir()
  • 14.
    ¿Qué es Modularidad?Es la capacidad de particionar algo complejo y difícil de manejar, en partes más sencillas y fáciles de manejar
  • 15.
  • 16.
    ¿Qué es Jerarquía? La capacidad de manejar niveles de abstracción
  • 17.
  • 18.
    ¿Qué es Herencia? Es la capacidad de los elementos de una jerarquía, de transmitir sus características desde los niveles mas abstractos a los más concretos
  • 19.
  • 20.
    Herencia Uno puedehacer representaciones generales de un objeto y después relacionarlas con otros objetos, para que cada uno tenga características mas especificas Estas son las relaciones que puede tener un objeto Animal Mamífero Ovíparo Canino Felino Reptil Firulais Lassie Garfield Felix
  • 21.
    ¿Qué es unObjeto? Informalmente, un objeto representa a una entidad, ya sea física, conceptual o software
  • 22.
  • 23.
    Una definición másformal Un objeto es un concepto, abstracción o cosa con fronteras definidas y con sentido para una aplicación Un objeto es algo que tiene: Estado Comportamiento Identidad
  • 24.
    Un Objeto tieneEstado El estado de un objeto es una de las posibles condiciones en que un objeto puede existir El estado de un objeto normalmente cambia con el tiempo El estado de un objeto es usualmente implementado por un conjunto de propiedades llamadas atributos, mas los enlaces que el objeto pueda tener con otros objetos El estado lo establecen los valores de los atributos
  • 25.
  • 26.
    Un objeto tienecomportamiento El comportamiento determina como un objeto actúa y reacciona. El comportamiento define la manera en la que un objeto responde a las peticiones de otros objetos. El comportamiento visible de un objeto se modela con un conjunto de mensajes a los que el puede responder Los mensajes se implementan como las operaciones del objeto.
  • 27.
  • 28.
    Un objeto tieneidentidad Cada objeto tiene una identidad única, aun si su estado en un momento dado, es idéntico al de otros objetos
  • 29.
  • 30.
    Ejemplo: Objeto :Televisor Atributos : Chasis, Pantalla, Antena, Color, Marca, Bocina, Sintonizador. Comportamiento (métodos): Encender, Apagar, Cambiar canal Estado de un atributo : Marca=sony. El estado es la asignación de un valor a un atributo.
  • 31.
    ¿Qué son Clases?Cuando se han identificado muchos objetos en un dominio, decimos que una clase es una abstracción que describe un grupo de objetos que tienen: • propiedades en común (atributos) • comportamiento en común (operaciones) • relaciones comunes con otros objetos (asociaciones) • semántica en común (descripción breve) Una clase es una abstracción porque: • enfatiza características relevantes al sistema • suprime otras características
  • 32.
    La Relación entreClases y Objetos Una clase en una definición abstracta de un objeto Define la estructura y comportamiento de cada objeto en la clase Sirve como una plantilla para crear objetos Un objeto es una instancia concreta de una clase • Los objetos pueden agruparse en clases
  • 33.
  • 34.
  • 35.
    Vehículo Punto FiguraAnimal (1,3) (2,2) (2,1) (5,2.5) Platero:Animal
  • 36.
  • 37.
    Ejercicio Identifique loselementos de la siguiente lista, indicando cuales son objetos y cuales son clases. En el caso de los objetos, indicar cual sería la clase a la que pertenecen. Contestador telefónico de Mario Caja de Ahorro Servidor FTP Misil nuclear Botón de llamado al ascensor Máquina de Fax del Depto. de Ventas Vehículo Espacial Ariadne Apollo XIII Fondo de contingencia de la compañía Lanzador espacial Columbus Teléfono rojo de la oficina oval de la Casa Blanca Registro de Impuestos Federales
  • 38.
    Ejercicio 2 Enla siguiente lista, identificar cuales son atributos y cuales son clases. Intente asociar los atributos con las clases a las que podrían pertenecer. Autopista Nombre Población Número Paciente Tratamiento Cantidad adeudada Enfermedad Período orbital País Coordenadas Ultima Fecha de paso Satélite
  • 39.
    Otro ejemplo: Clasificación Objetos Niño Alejandro Mamá Gloria Papá Alexis Responsabilidades Nombre Edad Juguetes Cepillarse los dientes Avisar que tiene sueño Nombre Dormir al niño Nombre Arrancar el carro Leer el periódico Cuidar a los niños
  • 40.
  • 41.
    El Modelo ConceptualEs el primer modelo de clases que se debe hacer y reúne las abstracciones principales (key abstractions) del sistema que se desea construir • Es un primer intento de definir la estructura del sistema • Se obtiene al examinar la Descripción del Problema y en entrevistas con los expertos del dominio • Se usa como una base de entendimiento y cooperación con los expertos de dominio y / o clientes No debe incluir los detalles de las clases, solo debe identificarlas Incluye: • Un Diccionario del Modelo • Uno o mas Diagramas de Clases (normalmente solo uno)
  • 42.
    Guía para encontrarclases Una clase debe capturar una y solo una abstracción principal Mala abstracción: clase Estudiante que incluye el carga académica del estudiante para el semestre Buenas abstracciones: clases separadas para Estudiante y CargaAcadémica
  • 43.
  • 44.
    Nombrando las ClasesEl nombre de una clase, debe ser el sustantivo singular que mejor caracteriza la abstracción que se quiere representar con esa clase El que haya dificultad para nombrar una clase, puede ser indicio de que la abstracción que esta representa no se entiende bien o no esta bien definida Los nombres de las clases deben tomarse directamente del vocabulario del dominio
  • 45.
    Esto significa: Sedebe evitar la tendencia de tratar de dar nombres “mas representativos” a las clases que modelan cosas que ya tienen un nombre ampliamente difundido y utilizado en el dominio (eje: tratar de usar OrdenDeTrabajo en vez de Ticket) • Las mejores fuentes para escoger nombres, son las entrevistas con los expertos del dominio y la documentación misma del dominio (que existe aparte del la que se ha creado durante el proyecto; eje. guías de operación, manuales de procedimientos, etc) • Los principales términos, siglas, apodos, etc. del vocabulario del dominio, deben definirse e incluirse en la documentación del proyecto
  • 46.
    Guía de Estilopara Nombrar Clases Dictar convenciones y / o estándares para dar y presentar los nombres de las clases • Proporciona consistencia al proyecto • Resulta en modelos y código fuente más fácil de mantener Muestra de una Guía de Estilo • Las clases se nombran con sustantivos en singular • Los nombre de clases comienzan con mayúscula • El carácter de subrayado no se usa para unir palabras • Los nombres compuestos de varias palabras se unen y la inicial de cada palabra se pone en mayúscula Ejemplos: Estudiante, Profesor, PlanDeEstudios
  • 47.
    Definir la Semánticade la Clase Luego de nombrar la clase, debe hacerse una descripción breve y concisa de la clase (Definición de Trabajo) Enfóquese en el propósito de la clase, no en la implementación El nombre de la clase y la descripción forman la base de un Diccionario del Modelo
  • 48.
    Muestra del Diccionariodel Modelo Nombre: Estudiante • Definición de Trabajo : Información acerca de una persona registrada para realizar diversas actividades en la Universidad (principalmente recibir clases), con el fin de completar los cursos que conforman un Plan de Estudios Nombre: Curso • Definición de Trabajo : Una materia ofrecida por la Universidad, que es parte de un Plan de Estudios
  • 49.
  • 50.
    Ejercicio: Universidad Situaciónde análisis Suponga un día de clases en cualquier universidad de nuestro planeta y enunciemos entonces un conjunto de situaciones que se pueden dar en un intervalo de tiempo determinado: a) El estudiante Juan Hernández del grupo Inf11 de la carrera de Ingeniería Informática, se dirige hacia el edificio de aulas y en el trayecto se encuentra con la secretaria docente de su facultad (Ana González), que le solicita pase un poco más tarde a verla para confrontar sus datos personales (número de identidad permanente, fecha de nacimiento y dirección particular) con los que se encuentran registrados en la secretaría de dicha facultad. b) Poco antes de comenzar la clase de Introducción a la Programación la estudiante del grupo Inf11 Elsa Fernández, presidente de la Federación Estudiantil Universitaria (FEU) del referido grupo le informa a sus colegas de una propuesta de fechas para el desarrollo de los exámenes finales de las correspondientes asignaturas. c) Ya en la clase de Introducción a la Programación el profesor Asistente, M.C. Ernesto Pérez le comenta a los estudiantes sobre los requerimientos del proyecto de curso y la fecha de entrega del mismo. d) El también profesor Asistente, M.C. Pedro García solicita la información de los estudiantes con mejores promedios del grupo de segundo año (Inf21) y luego los de mejores resultados en la asignatura Programación I con el objetivo de seleccionar dos estudiantes para formar parte de la Casa de Software de la Facultad. e) Al Decano de la Facultad, profesor Titular, Dr. Julio Herrera, el Rector de la universidad profesor Titular, Dr. Jorge Gómez le solicita la información del número de profesores jóvenes que pertenecen a la Facultad, el criterio de profesor joven es que tenga menos de 35 años.
  • 51.
  • 52.
    Representando Clases conUML Las clases se representan en Diagramas de Clases, que son diagramas que en un mismo plano muestran uno o mas iconos, donde cada icono representa una clase específica En UML, el icono que se utiliza para representar una clase es un rectángulo que contiene el nombre de la clase y opcionalmente 3 compartimientos
  • 53.
  • 54.
    Compartimientos de lasClases Una clase se puede representar con 3 compartimentos o secciones La primera sección contiene el nombre de la clase La segunda sección muestra la estructura o propiedades (atributos) La tercera sección muestra el comportamiento (operaciones) El contenido de las secciones segunda y tercera puede suprimirse si no es necesario mostrarlo en el diagrama de clases Esto depende del nivel de detalle que requiera la perspectiva del diagrama Se pueden suprimir las secciones mismas
  • 55.
  • 56.
    Representando Objetos conUML Un objeto se representa con un rectángulo que contiene el nombre del objeto, subrayado El nombre del objeto puede representarse en tres formatos distintos dependiendo de si se quiere hacer referencia a un objeto “específico” o a un objeto “genérico”
  • 57.
  • 58.
  • 59.
    La interfaz deuna clase La interfaz de una clase define el tipo de peticiones (operaciones) que se le pueden hacer a objetos de esa clase ― Describe qué hace un objeto de una clase ― A un usuario de una clase sólo le hace falta conocer su interfaz
  • 60.
  • 61.
    Perspectiva en losDiagramas de Clases Los diagramas de clases pueden ser desde muy abstractos hasta muy concretos, dependiendo de lo que algunos autores* llaman la “perspectiva” que se haya tomado al crearlos. Esta perspectiva tiene una correlación directa con el flujo de trabajo en donde se producen los diagramas, y se puede clasificar así:
  • 62.
    Perspectiva Conceptual ,es la que se usa para hacer el Modelo Conceptual; sirve para modelar conceptos puros o abstracciones, como clases, sin importar como sean estas clases. Los diagramas hechos desde esta perspectiva normalmente son muy sencillos y no tienen detalle alguno mas que para nombrar las clases. Perspectiva de Especificación , es la que se usa para hacer el Modelo de Análisis. Vistas desde esta perspectiva, las clases están en el punto medio de ser abstractas y concretas; se define que es lo que deben hacer, pero no como deben hacerlo. Los diagramas aquí tienen algún grado de complejidad y detalle .
  • 63.
    Perspectiva de Implementación, es la que se usa para hacer el Modelo de Diseño. Las clases aquí son muy concretas pues deben incluir toda la información de cómo construirlas. Los diagramas creados desde esta perspectiva son muy detallados y complejos. La perspectiva de los diagramas no es parte formal del UML, pero es una consideración importante que debe tomarse al crear y revisar los diagramas de clases.
  • 64.
    Diagrama de Clasespara el Modelo Conceptual
  • 65.
    En Resumen Unaobjeto es algo que tiene estado, comportamiento e identidad El estado de un objeto es una de las posibles condiciones en las que el objeto puede existir El comportamiento determina como un objeto actúa y reacciona a peticiones de otros objetos Cada objeto tiene una identidad única, aún si su estado es idéntico al de otro objeto Una clase es una definición abstracta de un conjunto de objetos que comparten una estructura y comportamiento en común A las clases se les debe dar un nombre que mejor caracterice la abstracción que representan
  • 66.
    Resumen El ModeloConceptual es el primer modelo de clases que debe hacerse como parte del Análisis OO • Reúne las abstracciones principales del sistema • Incluye uno o mas diagramas de clases y un Diccionario del Modelo • Se hace conjuntamente con los expertos del dominio para establecer una base de entendimiento y cooperación Las clases se representan en UML con un rectángulo que contiene el nombre de la clase y opcionalmente 3 compartimientos • El primer compartimiento contiene el nombre de la clase • El segundo compartimiento muestra la estructura (atributos) • El tercer compartimiento muestra el comportamiento (operaciones)
  • 67.
    Objeto Estado Comportamiento Perro nombre, color, raza ladrar, correr , oler Bicicleta pedales, ruedas, manillar frenar, acelerar, cambiar
  • 68.
    Ejemplo: objetos presentesen un juego de ajedrez Rey 2 Reynas 2 Alfiles 4 Peones 16 (8 negros 8 blancos) Caballos 4 Torres 4 Tablero 1
  • 69.
    Atributos de laclase Un atributo es una característica del objeto, debe tener un tipo ( entero, real, string), pueden ser específicos a un lenguaje de programación. Pueden tener diferente visibilidad:
  • 70.
    Públicos: Se puedeutilizar y visualizar fuera de la clase (se representa con un signo más delante del nombre) Privados: No se puede accedeer al mismo desde otras clases (se representa con un signo menos delante del nombre)
  • 71.
    Protegidos: Se utilizaen notaciones de generalización y especialización para representar atributos protegidos relacionados con clases derivadas(#)
  • 72.
    Mutables o inmutablesMutables: sus valores se pueden modificar Inmutables: sus valores no se pueden modificar
  • 73.
    Variable de claseUn atributo puede ser definido como un atributo de ámbito de clase. Esto significa que el atributo está compartido entre todos los objetos de una cierta clase. Se debe subrayar este atributo.
  • 74.
    Operaciones o métodosde una clase Se utilizan para manipular los atributos, o realizar alguna otra acción; son funciones a la que se llama o invoca, son interiores a la clase y se pueden aplicar sobre objetos de esa clase.
  • 75.
    Visibilidad de losmétodos + pública - privada Su sintáxis general es: Visibilidad nombre (lista-parametros): tipo-expresión-retorno + Aterrizar (velocidad: Integer, dirección:Dirección)
  • 76.
    Otro ejemplo: Dela clase Figura, el método +devolverPosición():Posición
  • 77.
    Donde.. Lista-parámetros esuna lista de parámetros formales separados por coma, especificados cada uno con la siguiente sintaxis: nombre: tipo-expresión = valor por omisión
  • 78.
    Clase abstracta Esuna clase que no tiene ningún objeto, es decir, de la cual no se pueden crear instancias (objetos). Se utiliza para heredar de ella atributos y comportamientos comunes. Se especifica poniendo la etiqueta {abstract} dentro de la banda de nombre de la clase y debajo del mismo.
  • 79.
    Ejemplo: La claseFigura es la que contiene las características comunes a dichas figuras concretas por tanto, no tiene forma ni tiene área. Esto lo expresamos declarando Figura como una clase abstracta, declarando la función miembro área abstract .
  • 80.
    Las clases abstractassolamente se pueden usar como clases base para otras clases. No se pueden crear objetos pertenecientes a una clase abstracta. Sin embargo, se pueden declarar variables de dichas clases.
  • 81.
    Figura +Diametro: Integer+Posición: Posición +Dimensiones : Integer +área()
  • 82.
    En java: public abstract class Figura { protected int x; protected int y; public Figura(int x, int y) { this.x=x; this.y=y; } public abstract double area(); }
  • 83.
    class Rectangulo extendsFigura { protected double ancho, alto; public double area() { return ancho*alto; } }
  • 84.
    Representación de unobjeto Un objeto de una clase se representa por un rectángulo con el nombre del objeto y su clase subrayada Garcia Lorca:Persona Nombre: “Federico Dirección: “Huerta Edad: 66 Leer_Nombre() Fijar_dirección()
  • 85.
    Acceso a lasresponsabilidades de los objetos <objeto>.<responsabilidad> Alejandro puede acceder a su atributo nombre: Alejandro.nombre y al método CepillarseDientes() Alejandro.CepillarseDientes()
  • 86.
    Mensajes La maneraen que se comunican los objetos es a través de mensajes. Por ejemplo el niño Alejandro le avisa a su mamá Gloria que tiene sueño Alejandro.Avisar_sueño(Gloria)
  • 87.
  • 88.
    Pregunta: ¿Cómoel rector podría obtener la cantidad de profesores de la facultad de informática con menos de 35 años?
  • 89.
    El objeto rectorpodría enviarle un mensaje al objeto informática y este responder de la siguiente forma: Jorge.SolicitudNumProf(informática) informática.CantidadProfesoresJóvenes()
  • 90.
    Fuentes Bibliográficas: Adaptadode: Galicia, Y. Programación Avanzada. Disponible en: http://www.cs.buap.mx/~ygalicia/POO.pdf