primeraclaseobjetos clases
Post on 30-Jun-2015
1.037 Views
Preview:
TRANSCRIPT
Programación 302
Iniciando
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 ObjetosA
bstr
acci
ón
Jera
rquí
a
Mod
ular
idad
Pol
imor
fism
o
Enc
apsu
laci
ó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, ...
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, ...
¿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 PlazoPuertoCuenta
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.
Figura
+Diametro: Integer+Posición: Posición+Dimensiones: Integer
+dibujar()+Leer_dimensiones():Inte
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()
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()
top related