Вы находитесь на странице: 1из 62

INTRODUCCIN A LA PROGRAMACIN

Profesores:

Luz A. Snchez Glvez


Mario Anzures Garca

Introduccin del curso

El curso consiste:

Una introduccin a los principios fundamentales de la programacin orientada a objetos, incluyendo el uso de estructuras de control, abstraccin funcional, clases y mtodos, as como estructuras de datos bsicas; con lo cual el estudiante ser capaz de ponerlos en prctica para la implementacin de programas en un lenguaje de programacin orientado a objetos.

Introduccin del curso

Objetivos:

Identificar los principios fundamentales del Paradigma orientado a objetos. Aprender las tcnicas del diseo orientado a objetos. Resolver problemas utilizando el enfoque orientado a objetos: cmo los objetos se comunican" y "cooperan. Solucionar problemas mediante programas correctos, es decir, disear e implementar soluciones efectivas.

Contenido del curso


I.
II.

III.

Modelado orientado a objetos. Estructuras (arreglos: vectores, matrices). Archivos.

cadenas,

Bibliografa

Data Structures & Algoritm in C++

Michael T. Goodrich, Roberto Tamassia & David Mount. 2. Ed. John Wiley and Sons, Inc. 2011.

Modelado y Diseo Orientado a Objetos


Rumbaugh, James, Blaha, Michael, Premerlani, William, Pearson, 2001

Beginning Programming with C++ For Dummies

Stephen R. Davis. Wiley Publishing, Inc. 2010.

The C++ Programming Language

Bjarne Stroustrup. 3. Ed.Addison-Wesley. 1997.

Evaluacin

Examen (3 parciales, 3 de recuperacin y un general) Prcticas Proyecto Participacin Asistencia (80% Ordinario, Extraordinario) Fechas de los parciales

Primer Parcial: 21 de septiembre a las10:30 horas Segundo Parcial: 19 de octubre a las10:30 horas Tercer Parcial: 23 de noviembre a las10:30 horas

Evolucin de la POO

Aos 60 Simula

Resolucin de problemas de simulacin Ole-Johan Dahl & Krysten Nygaard (Noruega) Entorno de programacin entendible por novatos Alan Kay (Xerox PARC, Palo Alto, California) Extensin de C Bjarne Stroustroup (AT&T Bell Labs) Write once, run everywhere Sun Microsystems

Aos 70 Smalltalk

Aos 80 C++

Aos 90 Java

Anlisis y Diseo Orientado a Objetos

Es un enfoque de la Ingeniera de Software que permite modelar un sistema como un grupo de objetos que interactan entre s. Este enfoque representa un dominio en trminos de conceptos compuestos por verbos y sustantivos, clasificados de acuerdo a su dependencia funcional.

Desarrollo de programas de Software

El desarrollo de software implica cuatro actividades bsicas.

Establecer requisitos. Crear un diseo. Implementar cdigo. Probar la implementacin.

Estas actividades no son estrictamente lineales, se pueden solapar e interactuar entre s.

Establecer requisitos

Especificar las tareas de un programa

Qu hace, no cmo lo hace

Un conjunto de requisitos proporcionado, debe ser mejorado y extendido. Es difcil establecer requisitos detallados, inambigos y completos. Una atencin cuidadosa a los requisitos puede ahorrar tiempo y dinero en el proyecto completo.

Crear Diseo

Especfica cmo un programa lograr sus requisitos.

Especfica como la solucin puede ser descompuesta en partes ms simples y que har cada una. Un diseo orientado a objetos determina las clases necesarias y cmo interactan. El diseo a bajo nivel incluye como los mtodos lograrn sus tareas.

Implementar cdigo

La implementacin es el proceso de pasar un diseo en cdigo. Los programadores novatos piensan que escribir cdigo es la parte esencial del desarrollo de software, pero actualmente debe ser el paso menos creativo.

Implementacin debe centrarse en detalles de cdigo, incluyendo guas de estilo y documentacin.

Pruebas

Las pruebas intentan asegurar que el programa resuelva el problema bajo las restricciones especificadas en los requisitos.

Un programa debera ser probado para encontrar los errores. La depuracin es el proceso para determinar la causa de los problemas.

Ventajas del Diseo OO


Robustez Adaptabilidad Reusabilidad

Robustez

Un software es robusto, si es capaz de manejar entradas inesperadas que no estn explcitamente definidas para su aplicacin.

Por ejemplo, si un programa est esperando un nmero entero positivo (que representa el precio de un artculo) y en su lugar se da un nmero entero negativo, entonces el programa debe ser capaz de recuperarse correctamente de este error.

Adaptabilidad

Software capaz de evolucionar con el tiempo en respuesta a las condiciones cambiantes de su entorno.

Un concepto relacionado a la adaptacin de software es la portabilidad; que es la habilidad de un software para ejecutarse con cambios mnimos en diferente hardware y diferentes sistemas operativos.

Reusabilidad

El software sea reutilizable, es decir, el mismo cdigo debe ser utilizable como un componente de sistemas diferentes en diversas aplicaciones.

Reduce tiempo y costo en el desarrollo de proyectos complejos.

Principios del Diseo OO

Abstraccin Encapsulacin Modularidad

Abstraccin

La nocin de abstraccin consiste en descomponer un sistema complejo hasta sus partes fundamentales y describir estas partes en un lenguaje sencillo y preciso.

Usualmente, describiendo las partes de un sistema implica nombrarlas y explicar su funcionalidad.

Abstraccin

En C++, la funcionalidad de una estructura de datos se expresa a travs de la interfaz pblica de la clase asociada o clases que definen la estructura de datos.

Por interfaz pblica, nos referimos a las definiciones (nombres, tipos de retorno y los tipos de argumentos) de las funciones miembro pblica de una clase. Esta es la nica parte de la clase que se puede acceder por un usuario de la clase.

Encapsulacin

El concepto de encapsulacin, establece que los diferentes componentes de un sistema de software no deben revelar los detalles internos de sus respectivas implementaciones. Una de las principales ventajas de la encapsulacin es que da libertad al programador en la implementacin de los detalles de un sistema.

La nica restriccin para el programador es mantener la interfaz abstracta.

Modularidad

Los sistemas de software modernos suelen consistir de varios componentes que deben interactuar correctamente para que todo el sistema funcione apropiadamente.

La modularidad se basa en el principio de estructuracin de cdigo, que consiste en que los diferentes componentes de un sistema de software se dividen en unidades funcionales.

UML (Unified Modeling Language)

Un formalismo estndar de facto para el anlisis y diseo de software. Un lenguaje de modelado permite la representacin conceptual y fsica de un sistema. Un estndar por Object Management Group (OMG).

Utiliza notaciones grficas para expresar el anlisis y diseo OO de proyectos de software.


Simplifica el complejo proceso de diseo de software.

UML

Para modelar con UML se utilizan herramientas CASE como:


Rational Rose Together Poseidn ArgoUML StarUML Architect Enterprise

El modelo Orientado a Objetos

Los modelos de datos son la herramienta principal para ofrecer la abstraccin. Un modelo basado en la percepcin de una coleccin de objetos.

El modelo Orientado a Objetos

Un programa (independientemente del lenguaje en el cul este escrito) est constituido por dos partes fundamentales:

Objetos: Una representacin de la informacin (datos) relativos al dominio de inters. Operaciones: Una descripcin de cmo manipular la representacin, de tal manera que se realice la funcionalidad deseada.

El modelo Orientado a Objetos

Una entidad es un objeto que existe y que se puede distinguir de otros objetos, es decir, una "cosa" del mundo real con existencia independiente.

Una entidad puede ser concreta (como una persona o un libro), o puede ser abstracta (como un da festivo) o un concepto (un puesto de trabajo o un curso universitario).

El modelo orientado a objetos

Un objeto se caracteriza por tener un estado y un comportamiento.

El estado corresponde a los valores que toman un conjunto de propiedades o variables de instancia
El comportamiento es llevado a cabo mediante una serie de operaciones o funciones que operan sobre el objeto, y que se denominan mtodos.

El modelo orientado a objetos

Los objetos que tienen el mismo tipo de propiedades y el mismo comportamiento son agrupados en clases, que se organizan en un diagrama o jerarqua de clases, en el que las clases pueden estar relacionadas mediante relaciones de asociacin o mediante relaciones de herencia. La herencia permite la definicin de clases a partir de clases existentes heredndose a las nuevas clases las propiedades y el comportamiento de las clases existentes, cumplindose tambin que todo objeto de una subclase tambin es objeto de su superclase.

El modelo orientado a objetos

La nica forma en la que un objeto puede acceder a los datos de otro objeto es a travs de los mtodos de este objeto. Esto se denomina envo de mensajes al objeto. La interfaz de llamada mediante los mtodos de un objeto define la parte visible, mientras que la parte interna del objeto (variables y cdigo de los mtodos) no es visible externamente. De esta forma se tienen dos niveles de abstraccin.

El modelo orientado a objetos

Sea un objeto que representa una cuenta, y que dicho objeto contiene las variables de instancia No_cuenta y saldo.
Este objeto puede tener un mtodo denominado Ingresar() que aade una cantidad al saldo.

Relacin de Asociacin

Es una relacin estructural entre dos elementos, que describe las conexiones entre ellos.

Aunque las asociaciones suelen ser bidireccionales (se pueden recorrer en ambos sentidos), en ocasiones es deseable hacerlas
unidireccionales (restringir su navegacin en un nico sentido).
Alumno -matricula: Integer -nombre: String -sexo: Boolean -edad: Integer -IMC: Float +alta() +baja() +modificacion() Curso -nrc: Integer -clave: String -nombre: String -creditos: Integer +alta() +baja() +modificacion() Profesor -identificador: Integer -nombe: String -categoria: String -sexo: Boolean +alta() +baja() +modificacion()

toma 1 1..*

imparte 1..* 1

Visibilidad

Distintos niveles de encapsulacin se pueden establecer para los miembros de una clase (atributos y mtodos) en funcin de su acceso:
C++

Visibilidad

Para encapsular por completo el estado de un objeto, todos sus atributos se declaran como variables de instancia privadas. A un objeto siempre se accede a travs de sus mtodos pblicos (su interfaz). Para utilizar un objeto no es necesario saber qu algoritmos utilizan sus mtodos ni qu tipos de datos se emplean para mantener su estado (su implementacin).

Multiplicidad o Cardinalidad

La multiplicidad de una asociacin determina cuntos objetos de cada tipo intervienen en la relacin.

El nmero de instancias de una clase que se relacionan con una instancia de la otra clase. Cada asociacin tiene dos multiplicidades (una para cada extremo de la relacin). Para especificar la multiplicidad de una asociacin hay que indicar la multiplicidad mnima y la mxima (mnima..mxima)

Multiplicidad

Cardinalidad o Multiplicidad

Cuando la cardinalidad es mnima 0, la relacin es opcional. Una cardinalidad mnima mayor o igual que 1 establece una relacin obligatoria.
Todo profesor pertenece a una Facultad. A una Facultad pueden pertenecer varios profesores.
pertenece * 1

Profesor

Facultad

Multiplicidad

Cuenta 0..*

es titular de 1..*

Cliente

Relacin opcional Un cliente puede o no ser titular de una cuenta

Relacin obligatoria Una cuenta ha de tener un titular como mnimo

Multiplicidad

Relaciones involutivas Cuando la misma clase aparece en los dos extremos de la asociacin.
* dirige

Empleado

Persona

1 casada con

Multiplicidad

Libro -isbn -titulo -autor -editorial -ao acerca de * 1..* Tema -id -descripcin * 1

sub

Multiplicidad

Libro Comentario -fecha: String -puntuacion: Float -texto: String 1..* hace 1 Usuario -nombre: String -clave: String 1 lee 1..* * acerca de 1..* Tema -id: String -descripcin: String * 1 sobre un * 1 -isbn: String -titulo: String -autor: String -editorial: String -ao: Integer escribe * * Autor -nombre: String

sub

Relacin de asociacin

Las asociaciones suelen ser bidireccionales, tambin puede relacionarse con varias clases C1, C2,...,Cn es decir, relacin de asociacin n-aria.

Clase de asociacin

Una asociacin que tiene una clase de asociacin relacionada describe las propiedades de la asociacin, como atributos, operaciones, etc. de una asociacin binaria A entre dos clases de C1 y C2, con una clase de asociacin.

Clase de asociacin

La clase A es la clase de asociacin relacionada con la asociacin, y la r1 y r2 son los nombres de funcin de C1 y C2, respectivamente, especifican el papel que juega cada clase dentro de la Asociacin A.

Ejemplo:
Cliente Producto

Orden

Ejemplo:
Cliente Producto

Factura

Ejemplo:
Estudiante Libro

Prestamo

Ejemplo:
Cliente Pelcula

Renta

Multiplicidad
Alumno -matricula: String -nombre: String -direccion: String -beca: Float *

se_matricula_en -calificacion: Float

1..* Asignatura -nrc: Integer -nombre: String -creditos: Integer -nivel: String -periodo: String Grupo se imparte en 1 1..* -seccin: Integer -tipo: String ensea * 1..* Profesor -num_trabajador: String -nombre: String -categoria: String -area: String * pertenece a * Aula -id: String -nombre: String -capacidad: Integer 1 Facultad -id: String -nombre: String

asiganda a -dia: String -hora: Integer

Clase de asociacin

Una clase de asociacin tambin se puede agregar a una asociacin n-aria, como a continuacin se muestra:

Herencia

La herencia permite reutilizar clases: Se crea una nueva clase que extiende la funcionalidad de una clase existente sin tener que reescribir el cdigo asociado a esta ltima. La nueva clase, a la que se denomina subclase, puede poseer atributos y mtodos que no existan en la clase original. Los objetos de la nueva clase heredan los atributos y los mtodos de la clase original, que se denomina superclase.

Herencia

Trabajador, clase genrica que almacena datos como nombre, direccin, nmero de telfono o el nmero de seguro social de un trabajador.
Empleado, clase que representa los empleados que tienen una nmina mensual (encapsula datos como su salario anual o las retenciones).

Consultor, clase que representa a los trabajadores que cobran por horas (registra el nmero de horas que ha trabajado un consultor y su tarifa horaria).

Herencia
Trabajador -nombre -puesto -direccin -telfono -fecha_nacimiento -fecha_contratacin -NSS +equals() +toString()

Empleado -sueldo -impuestos +calcularpago() +toString()

Consultor -horas -tarifa +calcularpago() +toString()

Polimorfismo

Posibilidad de definir clases diferentes, que tienen mtodos o atributos denominados de forma idntica, pero que se comportan de manera distinta.

Agregacin y Composicin

Son casos particulares de asociaciones: relacin entre un todo y sus partes.

Relacin de Agregacin

Las partes pueden ser de distintos agregados.

Una agregacin es una relacin binaria entre las instancias de dos clases, lo que denota una relacin parte-todo, es decir, una relacin que especifica cada instancia de una clase contiene un conjunto de instancias de otra clase.

Polgono

0..1 contiene

3..*

Punto

Relacin de Agregacin

Es comn que un objeto contenga objetos de otras clases, tal relacin se conoce como Agregacin.

Un objeto Auto tiene o esta conformado por objetos de otras clases Llantas, Motor, etc.

La relacin de Agregacin se puede leer como tiene un, es parte de o consta de.

Un auto tiene un motor

Relacin de Agregacin

La relacin de agregacin, es una relacin dbil entre los objetos, ya que estos pueden existir independientemente del todo. Es decir, un motor puede existir, sin ser parte de un auto.

Relacin de Composicin

Agregacin disjunta y estricta: Las partes slo existen asociadas al compuesto (slo se accede a ellas a travs del compuesto).
La relacin de composicin es muy parecida a la de Agregacin (del tipo tiene un), slo que en este caso la relacin es mas fuerte.

Relacin de Composicin

La relacin de Composicin se denota por una lnea terminada en un rombo coloreado.


Ventana -titulo: Cabecera -cuerpo: Panel -barra: ScrollBar 1 Ventana -titulo: Cabecera -cuerpo: Panel -barra: ScrollBar

1 titulo 0..1 Cabecera cuerpo 1 Panel barra 0..2 ScrollBar

Relacin de Dependencia

Es una relacin semntica entre dos elementos (o dos conjuntos de elementos), en la cual un cambio en un elemento puede afectar a la semntica de otro elemento. Relacin entre un cliente y el proveedor de un servicio usado por el cliente.

Cliente es el objeto que solicita un servicio. Proveedor es el objeto que provee el servicio solicitado.

Para resolver una ecuacin de segundo grado se recurre a sqrt de la clase Math para calcular una raz cuadrada.
Ecuacin +coeficiente[3] +resolver()() Math +pow() +sqrt()

Ejemplo:
Conductor

Vehculo Asociacin

Realizacin Viaje

Interfaz A

Dependencia

Agregacin Neumtico Generalizacin Generalizacin Autobus Ruta

RutadeViaje

Clase de Asociacin

Avin

Area

Composicin

Вам также может понравиться