Primeraclaseobjetos clases

90

Transcript of Primeraclaseobjetos clases

Page 1: Primeraclaseobjetos clases
Page 2: Primeraclaseobjetos clases

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.

Page 3: Primeraclaseobjetos clases

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

Page 4: Primeraclaseobjetos 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

Page 5: Primeraclaseobjetos clases

Principios Básicos de Orientación a Objetos

Orientación a ObjetosA

bstr

acci

ón

Jera

rquí

a

Mod

ular

idad

Pol

imor

fism

o

Enc

apsu

laci

ón

Page 6: Primeraclaseobjetos clases

¿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

Page 7: Primeraclaseobjetos clases

La Abstracción Minimiza la Complejidad

Page 8: Primeraclaseobjetos clases

¿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

Page 9: Primeraclaseobjetos clases

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

Page 10: Primeraclaseobjetos clases
Page 11: Primeraclaseobjetos clases

Vol+

Sens3 => Vol++=> DAC31.out=2.1=> Amp27.gain=1.3=> OSD, Pref, ...

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

Sens => VolUp =>=> Settings.vol++=> DAC23.out=0.7=> Amp02.gain=1.7=> OSD, Pref, ...

Page 12: Primeraclaseobjetos clases

¿Que es Polimorfismo? Es la habilidad de esconder diferentes

implementaciones tras una sola interface

Page 13: Primeraclaseobjetos clases

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

Abrir()Abrir() Abrir()Abrir()

Page 14: Primeraclaseobjetos clases

¿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

Page 15: Primeraclaseobjetos clases
Page 16: Primeraclaseobjetos clases

¿Qué es Jerarquía?

• La capacidad de manejar niveles de abstracción

Page 17: Primeraclaseobjetos clases
Page 18: Primeraclaseobjetos clases

¿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

Page 19: Primeraclaseobjetos clases
Page 20: Primeraclaseobjetos clases

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

Page 21: Primeraclaseobjetos clases

¿Qué es un Objeto?

Informalmente, un objeto representa a una entidad, ya sea física, conceptual o software

Page 22: Primeraclaseobjetos clases
Page 23: Primeraclaseobjetos clases

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

Page 24: Primeraclaseobjetos clases

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

Page 25: Primeraclaseobjetos clases
Page 26: Primeraclaseobjetos clases

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.

Page 27: Primeraclaseobjetos clases
Page 28: Primeraclaseobjetos clases

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

Page 29: Primeraclaseobjetos clases
Page 30: Primeraclaseobjetos clases

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.

Page 31: Primeraclaseobjetos clases

¿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

Page 32: Primeraclaseobjetos clases

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

Page 33: Primeraclaseobjetos clases
Page 34: Primeraclaseobjetos clases

Clases y Objetos

Page 35: Primeraclaseobjetos clases

Vehículo

Punto

Figura

Animal

(1,3)

(2,2)

(2,1)

(5,2.5)

Platero:Animal

Page 36: Primeraclaseobjetos clases
Page 37: Primeraclaseobjetos clases

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

Page 38: Primeraclaseobjetos clases

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

Page 39: Primeraclaseobjetos clases

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

Page 40: Primeraclaseobjetos clases
Page 41: Primeraclaseobjetos clases

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)

Page 42: Primeraclaseobjetos clases

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

Page 43: Primeraclaseobjetos clases
Page 44: Primeraclaseobjetos clases

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

Page 45: Primeraclaseobjetos clases

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

Page 46: Primeraclaseobjetos clases

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

Page 47: Primeraclaseobjetos clases

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

Page 48: Primeraclaseobjetos clases

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

Page 49: Primeraclaseobjetos clases
Page 50: Primeraclaseobjetos clases

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.

Page 51: Primeraclaseobjetos clases
Page 52: Primeraclaseobjetos clases

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

Page 53: Primeraclaseobjetos clases
Page 54: Primeraclaseobjetos clases

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

Page 55: Primeraclaseobjetos clases
Page 56: Primeraclaseobjetos clases

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”

Page 57: Primeraclaseobjetos clases
Page 58: Primeraclaseobjetos clases
Page 59: Primeraclaseobjetos clases

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

Page 60: Primeraclaseobjetos clases
Page 61: Primeraclaseobjetos clases

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í:

Page 62: Primeraclaseobjetos clases

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

Page 63: Primeraclaseobjetos clases

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

Page 64: Primeraclaseobjetos clases

Diagrama de Clases para el Modelo Conceptual

Page 65: Primeraclaseobjetos clases

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

Page 66: Primeraclaseobjetos clases

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)

Page 67: Primeraclaseobjetos clases

Objeto Estado Comportamiento

• Perro nombre, color, raza ladrar, correr , oler

• Bicicleta pedales, ruedas, manillar frenar, acelerar, cambiar

Page 68: Primeraclaseobjetos clases

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

Page 69: Primeraclaseobjetos clases

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:

Page 70: Primeraclaseobjetos clases

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

Page 71: Primeraclaseobjetos clases

• Protegidos: Se utiliza en notaciones de generalización y especialización para representar atributos protegidos relacionados con clases derivadas(#)

Page 72: Primeraclaseobjetos clases

Mutables o inmutables

• Mutables: sus valores se pueden modificar

• Inmutables: sus valores no se pueden modificar

Page 73: Primeraclaseobjetos clases

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.

Page 74: Primeraclaseobjetos clases

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.

Page 75: Primeraclaseobjetos clases

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)

Page 76: Primeraclaseobjetos clases

Otro ejemplo:

• De la clase Figura, el método

• +devolverPosición():Posición

Page 77: Primeraclaseobjetos clases

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

Page 78: Primeraclaseobjetos clases

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.

Page 79: Primeraclaseobjetos clases

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.

Page 80: Primeraclaseobjetos clases

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

Page 81: Primeraclaseobjetos clases

Figura

+Diametro: Integer+Posición: Posición+Dimensiones: Integer

+área()

Page 82: Primeraclaseobjetos clases

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();

• }

Page 83: Primeraclaseobjetos clases

• class Rectangulo extends Figura• {• protected double ancho, alto;• public double area()• { • return ancho*alto; }• }

Page 84: Primeraclaseobjetos clases

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: “FedericoDirección: “HuertaEdad: 66

Leer_Nombre()Fijar_dirección()

Page 85: Primeraclaseobjetos clases

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()

Page 86: Primeraclaseobjetos clases

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)

Page 87: Primeraclaseobjetos clases
Page 88: Primeraclaseobjetos clases

• Pregunta: ¿Cómo el rector podría obtener la cantidad de profesores de la facultad de informática con menos de 35 años?

Page 89: Primeraclaseobjetos clases

• 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()

Page 90: Primeraclaseobjetos clases

• Fuentes Bibliográficas:• Adaptado de:

• Galicia, Y. Programación Avanzada.

• Disponible en: http://www.cs.buap.mx/~ygalicia/POO.pdf