38

Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo
Page 2: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Datos de Identificación

Asignatura Programación I

Código 3154

Semestre Tercero

Área Programación

Programa Ingeniería en Informática

Departamento Sistemas

Fecha de Elaboración 08/03/2012

Fecha Última actualización 27/06/2014

Page 3: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Primera Parte (Preliminares del Aprendizaje)

Introducción

Objetivos

Objetivo General

Objetivo Específico

Fuentes de Información

Evaluación de los aprendizajes

Page 4: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Segunda Parte (Desarrollo del Aprendizaje)

Conocimientos Previos

Clases en C++

Especificadores de acceso

Constructor

Funciones Miembros

Declaración

Implementación

Creación de objetos

Activación de Métodos

Page 5: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Qué es UML?.

Diagrama de Clases

Relaciones entre Clases

Relación de Uso.

Herencia.

Agregación.

Composición.

Page 6: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

El Lenguaje Unificado de Modelado (UML) prescribe un conjunto de notaciones y diagramas estándar para modelar sistemas orientados a objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo son procesos de negocio y funciones de sistema, además de cosas concretas como lo son escribir clases en un lenguaje determinado, esquemas de base de datos y componentes de software reusables.

Page 7: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

UML es una consolidación de muchas de las notaciones y conceptos más usadas orientados a objetos. Empezó como una consolidación del trabajo de Grade Booch, James Rumbaugh, e Ivar Jacobson, creadores de tres de las metodologías orientadas a objetos más populares.

Page 8: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Reconocer los componentes de las clases en UML y su representación en un lenguaje de programación.

1. Identificar los componentes de un diagrama de clases.

2. Representar las clases en un lenguaje de programación.

Page 9: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

• Joyanes, L. 2006. Programación en C++. Algoritmos, estructuras de datos y objetos. 2a Edición. Mc Graw Hill, Interamericana de España, S.A.U.

En este texto se encuentra de forma detallada casi todo el contenido de la unidad.

• Joyanes, L. 1998. Programación Orientada a Objetos. 2a Edición. Mc Graw Hill, Interamericana de España, S.A.U.

• Torrealba, G. 2010. Módulo Instruccional en Línea para la Cátedra de Programación (C4) en la Carrera de Análisis de Sistemas del Decanato de Ciencias y Tecnología de la Universidad Centroccidental “Lisandro Alvarado”. Trabajo de ascenso. UCLA.

• Díaz, R. 2010. Lineamiento para la programación orientada a objetos, utilizando la arquitectura modelo vista controlador y el lenguaje C++

Page 10: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

• BOOCH, G. 1996. Análisis y Diseño Orientado a Objetos con Aplicaciones. Addison –Wesley.

• BUJANDA L. 2004. Introducción a la Programación Orientada a Objetos utilizando C++. Trabajo de Ascenso.

• COAD, P y YOURDON, E. 1991. Object - Oriented Analysis. Second edition, Prentice-Hall; Object - Oriented Design. Prentice-Hall

• DEVIS, R. 1993. Programación Orientada a Objetos en C++. Paraninfo S.A.

Page 11: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

La evaluación de tu aprendizaje en esta unidad será de la siguiente manera:

Tendrás disponible una autoevaluación que podrás tomar en el momento que te sientas preparado mientras está disponible la Unidad.

esta unidad se evaluará en la

primera evaluación práctica de 5 pts.

esta unidad se evaluará en el primer parcial escrito de 25 pts.

Page 12: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Para el estudio exitoso de esta unidad requieres tener el dominio de:

Conceptos de la Programación Orientada a Objetos (POO).

Fundamentos de la POO.

Page 13: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Una clase en C++ debe ser declarada antes de ser utilizada. La declaración de una clase tiene el siguiente formato:

// Declaración de una clase

class MiClase

{

// Declaración de datos miembro o atributos

// Declaración de funciones miembros o métodos

};

Donde:

datos miembro o campos miembro, especifican las características (atributos) que tendrán los objetos de la clase que se está declarando.

funciones miembro o métodos, definen el comportamiento y las acciones que pueden realizar los objetos de la clase que se está declarando. Se declaran con prototipos de funciones.

Page 14: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

La clase encapsula sus datos miembros (atributos) y sus funciones miembros (métodos), por lo tanto, se debe disponer de un mecanismo para controlar el acceso a la misma. C++ utiliza tres especificadores de acceso, public, private y protected, que permiten acceder a algunos miembros de la clase y restringir el acceso a otros. Cuando un miembro (atributo o método) de una clase es declarado público (públic) indica que el atributo o método será visible tanto dentro como fuera de la clase, es decir, es accesible desde todos lados.

Es importante recordar, que la ocultación de los datos de la POO, establece que los atributos (datos) de un objeto no pueden ser manipulados por otros objetos, sino por los propios métodos internos del objeto, por lo tanto, a la hora de diseñar las clases de la aplicación se debe evitar colocar los atributos como public.

Page 15: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Cuando un miembro de una clase (atributo o método) es declarado privado ( private ), es inaccesible no sólo desde otras clases y otras partes del programa, sino también desde las subclases que se deriven de ella (recordar principio de herencia). Las clases derivadas se explicarán posteriormente.

Es importante acotar que un atributo privado sólo será accesible desde dentro de la clase, es decir, sólo los métodos de la clase a la que pertenece, lo pueden accesar. Cuando un miembro de una clase es declarado protegido ( protected ), solo podrá ser accesado por métodos de la clase y también de las subclases que se deriven de ella (recordar principio de herencia).

Page 16: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Tienen el mismo nombre de la clase y no devuelve valores.

Puede admitir parámetros como cualquier otra función.

Puede existir más de un constructor.

Las funciones constructoras se llaman cuando se declara el objeto (instancia de una clase).

Si no se define ningún constructor de una clase, el compilador generará un constructor por defecto.

Page 17: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Una clase contiene una serie de variables privadas (atributos), que solo pueden ser manipuladas por los métodos propios de la clase, por lo tanto, para cambiar el valor de un atributo o proporcionar a quien lo solicite el contenido del mismo, es necesario la existencia en la clase, de un par de funciones miembros denominadas generalmente Set y Get.

Se pueden tener funciones miembros que realizan cálculos y actualizan los datos miembros.

La función Set es el método que permite modificar el valor de una variable privada (atributo) de una clase; el valor que será asignado en el atributo proviene del exterior de la clase y la función Set lo recibe a través de un parámetro.

La función Get es el método que permite proveer el valor de una variable privada (atributo) de una clase a quién lo solicite, esto se logra a través de la instrucción return de la función.

Page 18: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

#include <string>

using namespace std;

class CuentaAhorro

{

/*Atributos de la Clase*/

private:

long numero;

string titular, fecha_apertura;

float saldo;

/*Metodos de la Clase*/

public:

CuentaAhorro ();

CuentaAhorro (long, string, string, float);

long GetNumero ();

:::

void SetNumero (long);

:::

void Depositar (float);

bool Retirar (float);

};

Un constructor es una función especial que sirve para construir o

inicializar objetos. Está presente en todas las clases.

Archivo CuentaAhorro.h

Page 19: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

#include “CuentaAhorro.h” CuentaAhorro::CuentaAhorro(){} CuentaAhorro::CuentaAhorro(long num, string tit, string fch, float sdo) { numero = num; ::: saldo = sdo; } long CuentaAhorro::GetNumero (){ return numero; } ::: void CuentaAhorro::SetNumero (long num){ numero = num; } ::: void CuentaAhorro::Depositar (float mto){ saldo += mto; } bool CuentaAhorro::Retirar (float mto){ if (saldo >= mto) { saldo -= mto; return true; } else return false; }

Archivo CuentaAhorro.cpp

Page 20: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Como se mencionó anteriormente, los objetos son las instancias de las clases, en otras palabras, una clase es el “molde” de construcción y los objetos son los elementos fabricados o “ instanciados” a partir de ese molde.

Del ejemplo de la clase “CuentaAhorro”, podemos instanciar los siguientes objetos.

nombre_de_la_clase nombre_objeto;

CuentaAhorro obj1_cuenta, obj2_cuenta;

Page 21: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Para mandar mensajes a los objetos se utiliza el operador punto, seguido del método que deseamos invocar (ejecutar), con sus respectivos parámetros, si los tiene .

Los objetos de un programa se comunican entre sí mediante el paso o envío de mensajes.

obj1_cuenta.Depositar(mto)

Page 22: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

En UML, un diagrama de

clases es un tipo de diagrama

estático que describe la

estructura de un sistema

mostrando sus clases y las

relaciones entre ellas.

UML es un lenguaje gráfico que

permite: visualizar, especificar,

construir y documentar un sistema

programado.

Page 23: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

En UML, las clases se representan mediante un rectángulo que esta dividido en tres partes:

Atributos

Operaciones (métodos)

Nombre

Privado (-)

Público (+)

Protegido (#)

Fecha

- dia : int

- mes : int

- anno : int

+ Fecha()

+ Fecha(d:int, m:int, a:int)

+ SetDia(d:int):void

+ SetMes(m:int):void

+ SetAnno(a:int):void

+ GetDia():int

+ GetMes():int

+ GetAnno():int

Page 24: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Las sintaxis de un atributo en UML es:

visibilidad <nombre>: tipo [= valor inicial]

Donde , visibilidad es uno de los siguientes modos de acceso: + público: Indica que el atributo será visible tanto dentro como fuera de

la clase, es decir, es accesible desde todos lados. Es importante recordar, que los atributos (datos) de un objeto no pueden ser manipulados por otros objetos, sino por los propios métodos internos del objeto, por lo tanto, se debe evitar colocar los atributos como public.

- privado: Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo pueden accesar). # protegido: Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accedido por métodos de la clase y

también de las subclases que se deriven de ella (recordar principio de herencia).

nombre: es el identificador valido del atributo. tipo: representa el tipo de dato que el atributo va a tomar.

Page 25: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

La sintaxis de una operación en UML es:

visibilidad nombre ([lista de parámetros]): tipo retorno

Al igual que los atributos las operaciones (métodos) también tienen visibilidad, cuyo modos de acceso

pueden ser: publico (+), privado (-) y protegido (#).

nombre es el identificador valido del método.

Cada parámetro de la lista de parámetros debe estar acompañado de su respectivo tipo y los mismos deben estar separados por coma.

El tipo de retorno, no es más que el tipo de dato que la operación va a retornar. Puede ocurrir que la operación no tenga retorno de ningún tipo, es decir, sea de tipo void.

Opcionales

Page 26: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Las relaciones conectan dos o más clases.

Algunas relaciones entre clases que se manejarán en este curso son :

Relación de Uso.

Herencia.

Agregación.

Composición

Page 27: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Se presenta cuando una clase necesita hacer uso de otra

clase pero sin incorporarla en su propia estructura.

En su lugar, la clase utilizada se pasa a la clase utilizadora

por alguna tercera parte, por ejemplo, como parámetro de

uno de los métodos de la clase utilizadora.

Se representa dibujando una línea discontinua que se

inicia (punto de partida) en la clase utilizadora y termina

con flecha (punto de llegada) en la clase utilizada.

Clase

Utilizada

Clase A Clase

Utilizadora

Clase B

Page 28: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Se conoce de cada uno de los estudiantes que forman parte de una sección su cédula, nota 1, nota 2 y nota 3. Se desea determinar por cada estudiante su nota final y por la sección, es indispensable conocer: porcentaje de aprobados, porcentaje de aplazados y promedio de notas .

A continuación se presenta el diagrama de clases del enunciado, donde se observa que entre las clases: Estudiante y Sección, hay una relación de uso.

El método Procesar usa un objeto de la clase

Estudiante, con el propósito de solicitarle la

información que necesita para realizar sus

operaciones, como son: acumular nota,

contar aprobados y contar aplazados.

Seccion

- ac_notas : float

- cont_apro : int

- cont_apla : int

- cont_est : int

+ Seccion()

+ SetAc_Notas(ac : float) : void

+ SetCont_Apro(capro : int) : void

:::

+ GetAc_Notas() : float

+ GetCont_Apro() : int

:::

+ Procesar(est : Estudiante) : void

+ PromedioNotas() : float

+ PorcentajeAprobados() : float

+ PorcentajeAplazados() : float

Estudiante

- cedula : string

- nota1, nota2, nota3 : float

+ Estudiante()

+ Estudiante(c : string, n1 : float,

n2 : float, n3 : float)

+ SetCedula(c : string) : void

+ SetNota1(n : float) : void

:::

+ GetNota3() : float

+ NotaFinal() : float

Page 29: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

La Herencia es la propiedad que permite definir nuevas clases (subclases) a partir de una clase base (superclase) ya existente.

La subclase hereda todos los atributos y métodos descritos en la superclase y puede tener sus propios atributos y métodos .

Se representa dibujando un triángulo sin rellenar en el lado de la superclase.

Page 30: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Cuenta Bancaria

Cuenta Corriente Cuenta de Ahorro

Relación “es un tipo de”.

Persona

Profesor Estudiante

Ordinario Contratado

Page 31: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

En la agregación existe una relación todo/parte, en la cual una clase representa un todo, y consta de partes más pequeñas.

Se representa con una línea continua, con un rombo sin rellenar del lado que representa el todo en la relación.

La relación de agregación no exige dependencia existencial, es decir, los objetos pueden existir independientemente uno del otro.

Page 32: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Si la universidad cierra definitivamente, los estudiantes no desaparecen sólo buscarán otra universidad donde puedan estudiar.

De la misma manera, si un estudiante deja de estudiar en la universidad, está continuará operando.

Universidad

Estudiante

Page 33: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

El objeto de una clase parte se crea dentro de un método de la clase todo. El objeto creado existirá mientras se ejecuta dicho método.

El propósito de crear el objeto parte, es para enviarles el o los mensajes respectivos, que ejecutaran el o los métodos que necesita el método de la clase todo, para realizar su tarea.

Page 34: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Se conoce de cada uno de los estudiantes de una sección la cédula y sus tres notas parciales. Se desea determinar para dicha sección, el porcentaje de aprobados, el porcentaje de aplazados y promedio de notas.

A continuación se presenta el diagrama de clases del enunciado, donde se observa que entre las clases: Estudiante y Sección, hay una relación de agregación.

El método ProcesarEstudiante crea un objeto

de la clase Estudiante, con el propósito de

solicitarle la información que necesita para

realizar sus operaciones, como son: acumular

nota, contar aprobados y contar aplazados.

Seccion

- ac_notas : float

- cont_apro : int

- cont_apla : int

- cont_est : int

+ Seccion()

+ SetAc_Notas(ac : float) : void

+ SetCont_Apro(capro : int) : void

:::

+ GetAc_Notas() : float

+ GetCont_Apro() : int

:::

+ ProcesarEstudiante(c : string,

n1:float, n2:float, n3:float) : void

+ PromedioNotas() : float

+ PorcentajeAprobados() : float + PorcentajeAplazados() : float

Estudiante

- cedula : string

- nota1, nota2, nota3 : float

+ Estudiante()

+ Estudiante(c : string, n1 : float,

n2 : float, n3 : float)

+ SetCedula(c : string) : void

+ SetNota1(n1 : float) : void

:::

+ GetNota3() : float

:::

+ NotaFinal() : float

Page 35: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Una composición es un tipo de asociación donde también existe una relación todo/parte, pero con una fuerte dependencia de propiedad; es decir, las partes viven en el todo y se destruyen cuando se destruye el todo.

En esta relación, una clase está compuesta por otras clases dependientes. Cuando deja de existir la clase compuesta, deja de existir el resto de las clases de la composición.

La relación de composición se representa con una línea continua y un rombo relleno del lado que representa el todo en la relación.

Page 36: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Relación

de Composición

Una Factura a crédito puede estar compuesta por 1 o más Pago(s), si esta se elimina, entonces los pagos relacionados con ella también se eliminan (no tiene sentido la existencia de "pagos" por separado), la relación es todo/parte" (el "pago" sólo existe como "parte“ de la factura).

Factura a Crédito

Pago

Page 37: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Al implementar una relación de composición los atributos de la clase todo, son instancias de clases que representan las partes.

Page 38: Datos de Identificación · objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML entrega una forma de modelar cosas conceptuales como lo

Se conoce de una persona el nombre y su fecha de nacimiento representada como día, mes y año

A continuación se presenta el diagrama de clases del enunciado, donde se observa que entre las clases: Persona y Fecha, hay una relación de composición.

Persona

- cedula : string

- nombre: string

- fecha_nac : Fecha

+ Persona ();

+ Persona (c : string, n : string,

f : Fecha)

+ SetCedula(c : string) : void

+ SetNombre(n : string) : void

+ SetFechaNac(fn : Fecha) : void

+ GetCedula() : string

+ GetNombre() : string

+ GetFecha_Nac() : Fecha

Fecha

- dia : int

- mes : int

- anno : int

+ Fecha()

+ Fecha(d : int, m : int, a : int)

+ SetDia(d : int) : void

+ SetMes(m : int) : void

+ SetAnno(a : int) : void

+ GetDia() : int

+ GetMes() : int

+ GetAnno() : int