79
Lenguaje de Lenguaje de Programación I Programación I Ing. Gerald Basurco Zapata Ing. Gerald Basurco Zapata

Encapsulamiento - UML – Diagrama de Clases (java)

Embed Size (px)

Citation preview

Page 1: Encapsulamiento - UML – Diagrama de Clases (java)

Lenguaje de Lenguaje de Programación IProgramación I

Ing. Gerald Basurco ZapataIng. Gerald Basurco Zapata

Page 2: Encapsulamiento - UML – Diagrama de Clases (java)

Tema 4Tema 4

• Encapsulamiento

• UML – Diagrama de Clases

• Ejemplos

Page 3: Encapsulamiento - UML – Diagrama de Clases (java)

EncapsulamientoEncapsulamiento

Page 4: Encapsulamiento - UML – Diagrama de Clases (java)

EncapsulamientoEncapsulamiento

El encapsulamiento permite a una clase ocultar su información al exteriorPara ocultar información la clase proporciona niveles de acceso: publico, protegido, privado, etc. (modificadores)

EJEMPLO: Crear una clase padre y agregar los siguientes atributos privados a la clase Padre: nombre, edad, sueldo.

Page 5: Encapsulamiento - UML – Diagrama de Clases (java)

EncapsulamientoEncapsulamiento

Nivel de acceso

Descripción

private

protected

Public

Atributos y métodos accesibles solo por la clase que las define

Atributos y métodos accesibles solo por las clases hijas o subclases

Atributos y métodos accesibles desde el exterior de la clase

No olvidar:

Page 6: Encapsulamiento - UML – Diagrama de Clases (java)

EncapsulamientoEncapsulamiento

A quien pertenecen los métodos que se listan??Si los atributos de la clase Padre son privados, como

accedo a ellos??

public class Encapsulamiento{ public static void Main() { Padre unPadre = new Padre(); unPadre; }}

Continuando, cree una clase ejecutable Encapsulamiento (es ejecutable porque en ella esta el método main) y escriba:

Como se ve no tenemos acceso desde el exterior a la información de la clase Padre

Page 7: Encapsulamiento - UML – Diagrama de Clases (java)

EncapsulamientoEncapsulamiento

En la clase Padre defina el método verData( ):

Page 8: Encapsulamiento - UML – Diagrama de Clases (java)

EncapsulamientoEncapsulamiento

En la clase Encapsulación escriba el siguiente código

Ejecute la clase Encapsulacion y vea el resultado

Page 9: Encapsulamiento - UML – Diagrama de Clases (java)

EncapsulamientoEncapsulamiento

Defina los siguientes constructores:

Page 10: Encapsulamiento - UML – Diagrama de Clases (java)

EncapsulamientoEncapsulamiento

En la clase Encapsulación escriba el siguiente código :

Ejecute la clase Encapsulación y vea el resultado

Page 11: Encapsulamiento - UML – Diagrama de Clases (java)

EncapsulamiEncapsulamientoento

Para acceder a miembros privados de una clase se definen sus métodos de acceso

Un método set puede cambiar el valor de un atributo privado

Un método get puede obtener el valor de un atributo privado:

Page 12: Encapsulamiento - UML – Diagrama de Clases (java)

No es accesible debido al

nivel de protección

Page 13: Encapsulamiento - UML – Diagrama de Clases (java)

UML – Diagrama de Clases

Page 14: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones entre ClasesRelaciones entre Clases

La orientación a objetos intenta modelar aplicaciones del mundo real tan fielmente como sea posible, apoyándose en ello en una gran facilidad de reutilización y extensibilidad del software. El potente concepto OO que proporciona estas características es la HERENCIA.

La herencia es la característica que diferencia esencialmente la POO de la programación tradicional, debido fundamentalmente a que permite extender y reutilizar el código existente sin tener que rescribir el mismo

Page 15: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones entre ClasesRelaciones entre Clases

Las relaciones entre clases juega un papel importante en el modelo de objetos. Las clases, al igual que los objetos, no existen de modo aislado. Por esta razón, existirán relaciones entre clases y entre objetos.

Las relaciones entre entidades, clave del modelado relacional de datos, se expresan utilizando verbos a partir de frases del lenguaje ordinario tales como vive-en, estudia-en, trabaja-para…

Page 16: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones entre Clases - Relaciones entre Clases - TiposTipos

La Generalización: que representa una relación <<un tipo de>>. Por ejemplo una rosa es una flor, simplificando que una rosa es una clase simplificada de una de la clase mas general, flor. Este tipo de relación se conoce como relación (es-un).

La Agregación: que representa <<una parte de>> la relación. Por consiguiente, un pétalo no es una clase de flor, es una parte de una flor.

La Asociación: que representa conexión semántica entre clases no relacionadas. Así, por ejemplo, rosas y velas son clases independientes, aunque ambas representan cosas que se pueden utilizar para decorar una mesa para cenar.

Page 17: Encapsulamiento - UML – Diagrama de Clases (java)

UML (Unified Modeling UML (Unified Modeling Language) Language)

UML es un lenguaje que permite modelar, construir y documentar los elementos que forman un sistema software orientado a objetos.

Page 18: Encapsulamiento - UML – Diagrama de Clases (java)

UML (Unified Modeling UML (Unified Modeling Language) Language)

UML combina notaciones provenientes desde:Modelado Orientado a Objetos Modelado de DatosModelado de Componentes Modelado de Flujos de Trabajo (Workflows)

El modelado es esencial en la construcción de software para:

Comunicar la estructura de un sistema complejoEspecificar el comportamiento deseado del sistemaComprender mejor lo que estamos construyendoDescubrir oportunidades de simplificación y

reutilización

Page 19: Encapsulamiento - UML – Diagrama de Clases (java)

Diagramas de UMLDiagramas de UML

Use CaseDiagramsUse Case

DiagramsDiagramas de Casos de Uso

ScenarioDiagramsScenario

DiagramsDiagramas deColaboración

StateDiagramsState

DiagramsDiagramas deComponentes

ComponentDiagramsComponent

DiagramsDiagramas deDistribución

StateDiagramsState

DiagramsDiagramas de Objetos

ScenarioDiagramsScenario

DiagramsDiagramas deEstados

Use CaseDiagramsUse Case

DiagramsDiagramas deSecuencia

StateDiagramsState

DiagramsDiagramas deClases

Diagramas deActividad

Modelos

Page 20: Encapsulamiento - UML – Diagrama de Clases (java)

Diagrama de ClasesDiagrama de Clases

Un diagrama de clase es un tipo de modelo estático. Un diagrama de clases describe la vista estática de un sistema en términos de clases y relación entre ellas. Un diagrama de clases muestra solo las clases, pero existe una variante del diagrama que muestra las instancias de objetos de las clases y que es el diagrama de objetos.

Page 21: Encapsulamiento - UML – Diagrama de Clases (java)

Diagrama de ClasesDiagrama de Clases

Una clase se dibuja con un rectángulo, dividido en tres compartimientos o bandas, la banda de nombre, la banda de atributos y la banda de operaciones

Nombre

Notación grafica de clases: normal y recudida

Page 22: Encapsulamiento - UML – Diagrama de Clases (java)

Diagrama de ClasesDiagrama de Clases

Atributosimportantes

Operacionesimportantes

Notación de una Clase

Page 23: Encapsulamiento - UML – Diagrama de Clases (java)

Diagrama de ClasesDiagrama de Clases

Un atributo tiene un tipo, que indica la clase de atributo. (int, double, string, etc.)

Los atributos pueden tener diferente visibilidad. La visibilidad describe si el atributo es visible y puede ser referenciado por otras clases distintas de aquellas en que se ha definido. Los atributos y su representación grafica puede ser:

◦ Públicos (public): Se puede utilizar y visualizar fuera de la clase. Se representa con el signo mas (+).

◦ Privados (private): No se puede acceder al mismo desde otras clases. Se representa con el signo menos (-).

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

Page 24: Encapsulamiento - UML – Diagrama de Clases (java)

Diagrama de ClasesDiagrama de Clases

Para la banda de operaciones (Métodos), la visibilidad es igual que para los atributos. No es necesario que todas las operaciones tengan tipo de retorno y parámetros, pero han de tener una asignatura única.

Page 25: Encapsulamiento - UML – Diagrama de Clases (java)

RelacionesRelaciones

Los diagramas de clase consta de clases y las relaciones entre ellas. Las relaciones que se pueden utilizar en UML son asociación, generalizaciones, dependencias y refinamiento.

Page 26: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AsociaciónRelaciones - Asociación

Una asociación es una conexión entre clases, una conexión (enlace) entre objetos de las clases implicadas en la asociación.

Una asociación representa una relación estructural entre objetos de clases diferentes.

La mayoría de las asociaciones son relaciones binarias aunque pueden existir relaciones ternarias o n-arias.

En esencia una asociación es una relación entre clases que especifica como se puede enlazar

juntas las instancias de las clases.

Page 27: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AsociaciónRelaciones - Asociación

La conexión entre una asociación y los enlaces correspondientes se realiza etiquetando ambas asociaciones y enlazándolas con el mismo nombre.

Programador ComputadoraUsa ►

Un Programador utiliza (Usa) una computadora.

Page 28: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AsociaciónRelaciones - Asociación

Una asociación es una relación entre clases que especifican cuantas instancias cuantas instancias se pueden enlazar juntas. Un enlace es la relación entre objetos. Una asociación se representa por una línea que une dos clases, el nombre de la asociación se escribe en la línea.

Estudiante Cursorecibe un

* *

Juan:Estudiante Matemáticas:Cursorecibe un

Historia:CursoMaría:Estudiante recibe un

recibe un

Page 29: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AsociaciónRelaciones - Asociación

Aunque las asociaciones conectan normalmente dos clases diferentes juntas, son posibles otros formatos. En particular existen muchas situaciones en donde los objetos se pueden enlazar a otros objetos de la misma clase. Ejemplo: los objetos representa aeropuertos y los enlaces representan la existencia de un vuelo que conecta los aeropuertos enlazados.

Lima:Aeropuerto Cusco:Aeropuerto

Tacna:AeropuertoArequipa:Aeropuerto

AeropuertoLos aeropuertos se enlazan a otros aeropuertos.Se conoce como auto-asociación

Page 30: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AsociaciónRelaciones - Asociación

Usuario ComputadoraUtiliza ►

tiene

Un usuario usa una computadora.

Etiquetas

Page 31: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AsociaciónRelaciones - Asociación

Multiplicidad entre las Asociaciones La multiplicidad de una asociación determina cuántos objetos

de cada tipo intervienen en la relación: El número de instancias de una clase que se relacionan con una instancia de la otra clase.

Cada asociación tiene dos multiplicidades (una para cada extremo de la relación).

Para especificar la multiplicidad de una asociación hay que indicar la multiplicidad mínima y la multiplicidad máxima (mínima..máxima) Multiplicidad Significado

11 Uno y sólo unoUno y sólo uno

0..10..1 Cero a unoCero a uno

N..MN..M Desde N hasta MDesde N hasta M

** MuchosMuchos

0..*0..* Cero a muchosCero a muchos

1..*1..* Uno a variosUno a varios

Page 32: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AsociaciónRelaciones - Asociación

Empresa Persona

◄Trabaja para* 1..*

Emplea - a►

empleador empleado

Multiplicidad

Nombre de Rol

Nombre de la asociación

Cada extremo de una asociación es un Rol (papel). Cada rol puede tener un nombre que indica como es visualizada la clase por la otra clase. Una Empresa visualiza a Persona como un empleado. De modo similar Persona visualiza la Empresa como empleador. Los nombres de los roles deben de ser únicos.

Page 33: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AsociaciónRelaciones - Asociación

Cada rol indica multiplicidad de su clase. Por ejemplo, una Persona puede trabajar para muchas empresas. Esto indica la multiplicidad del rol. ¿Cuántos objetos Empresa se pueden asociar con un objeto Persona?. Una Persona puede trabajar para muchas Empresas y una Empresa puede emplear a muchas Personas. Por consiguiente, la multiplicidad de Empresa con Persona es 1..*.

Empresa Persona

◄Trabaja para* 1..*

Emplea - a►

empleador empleado

Multiplicidad

Nombre de Rol

Nombre de la asociación

Page 34: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AsociaciónRelaciones - Asociación

Navegación de las asociaciones Aunque las asociaciones suelen ser bidireccionales (se pueden

recorrer en ambos sentidos), en ocasiones es deseable hacerlas unidireccionales (restringir su navegación en un único sentido).

Gráficamente, cuando la asociación es unidireccional, la línea termina en una punta de flecha que indica el sentido de la asociación:

Persona Carrosposee 0..*

Una Asociación navegable indica que una persona puede poseer

muchos carros.

Page 35: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AsociaciónRelaciones - Asociación

Profesor Escuelapertenece

a* 1..*Todo profesor pertenece a una o más

escuela .A una escuela pueden pertenecer varios

profesores.

Nieto AbueloVive con

* 0..4Todo nieto vive, hasta con sus cuatro

abuelosUn abuelo puede vivir con varios nietos

Cuenta Operación◄ Corresponde

a

1 *Una operación corresponde a una cuenta.

Page 36: Encapsulamiento - UML – Diagrama de Clases (java)

Clases AsociadasClases Asociadas

Una asociación puede ser otra clase en si misma , una clase asociación. La clase asociación no se conecta en ninguno de los extremos de la asociación. Es similar a una clase normal, puede tener atributos, operaciones y otras asociaciones. La clase asociación se utiliza para añadir información extra en un enlace.

Page 37: Encapsulamiento - UML – Diagrama de Clases (java)

Clases AsociadasClases Asociadas

Ejemplo: una operación o transacción en un cajero automático (CA) tiene sus propios atributos y también operaciones sobre ellos.

CA

propietariodirección

Cliente

nombrecontraseña

Operación CAtipo_operaciónfechahora

Clase asociación

operación* *

Page 38: Encapsulamiento - UML – Diagrama de Clases (java)

Clases AsociadasClases Asociadas

Compañía

nombredirección

Persona

nombredni

Trabajosalariodepartamentogerente

* *trabaja para

El trabajo realizado por una persona en una compañía es una clase

Page 39: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AgregaciónRelaciones - Agregación

La agregación es una caso especial de asociación. El agregado indica que la agregación entre clases es un tipo de todo parte. Un ejemplo de agregado es un coche que consta de cuatro ruedas, un motor un chasis, etc.

Las palabras o frases que se utilizan para identificar agregados son es-parte-de, consta-de, tiene-un, contiene, etc, y señalan una relación todo parte entre las clases implicadas

Page 40: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - AgregaciónRelaciones - Agregación

Una universidad tiene varias facultades o escuelas de modo que se puede suprimir o añadir alguna facultad y seguirá existiendo la universidad como tal. Esta es una característica de la agregación: las partes (Facultades) componen el todo (Universidad)

Todo Parte*

Universidad Facultad*

Tiene

Page 41: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

La definición de generalización en UML es: “una relación taxonómica (taxonomía es la ciencia de la clasificación) entre un elemento mas general y un elemento mas especifico”. La generalización cuando se manifiesta en un lenguaje de programación se suele conocer como HERENCIA. Esta relación implica generalización – especialización de la clase base a la clase derivada, donde existe una clase “general” y diferentes clases “especialización”.

Cuenta

CuentaCorrient

e

CuentaAhorro

CuentaSueldo

Generalización de la clase Cuenta

Page 42: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Frase

Adjetivo Nombre Verbo

Generalización en formato de jerarquía

Page 43: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Una generalización se conoce como relación “es-un”, “es-un-tipo-de”, y es una relación que es capaz de decir es-un entre el elemento especificado y el elemento general (un coche es-un vehículo, un vendedor es-un empleado, etc.).

Page 44: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Generalización ordinaria

La generalización es una relación entre una clase general y una clase especifica.La clase especifica denominada sub-clase hereda de la clase general, denominada superclase. Se heredan los atributos, las operaciones y todas las asociaciones. Los atributos y operaciones con la visibilidad publica en la superclase serán publicas en la subclase. Los miembros que tiene visibilidad privada se heredaran pero no son accesibles dentro de la subclase.Para proteger atributos y operaciones de acceso desde el exterior a la superclase y la subclase, se pueden hacer estos miembros protegidos.

Page 45: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Clase Abstracta

Una clase abstracta es aquella que no tiene ningún objeto, es decir, aquella de la que no se pueden crear instancias u objetos. Una clase abstracta solo se utiliza para heredar de ella y para describir atributos y comportamientos comunes de otras clase.

Page 46: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Coche

Cochedeportivo

Cocheturismo

Camión

Avión

Aviónmilitar

Avióntransporte

Avión depasajeros

Vehículo{abstract}

Una jerarquía de clases vehículo (abstracta) La clase coche es una subclase de vehículo y es una superclase de coche deportivo, coche turismo y coche camión

Page 47: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

La clase vehículo es un ejemplo de clase abstracta que no tiene ningún objeto, pero se utiliza solo para heredar de ella. Una clase abstracta normalmente tiene operaciones abstractas. Una operación abstracta es una que no tiene ningún método de implementación en la clase en que se especifica. Una clase que tiene al menos una operación abstracta debe de ser una clase abstracta, y una clase que hereda de una clase que tiene una o mas operaciones abstractas, debe de implementar esas operaciones (proporcionar métodos para ellas) o convertirse así misma en una clase abstracta.

Page 48: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Las operaciones abstractas se muestran con la cadena {abstracta} seguida de la signatura de la operación, y en letra cursiva. Las operaciones abstractas se definen en las clases abstractas para especificar el comportamiento que deben tener todas las subclases. Así, una clase vehículo puede tener operaciones abstractas que especifiquen operaciones a realizar por todos los vehículos tales como conducir, acelerar, frenar, detenerse, arrancar, etc.

Por consiguiente, todas las clases que heredan de Vehículo deben proporcionar métodos para esas operaciones (o convertirse en abstractas).

Page 49: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Vehículo{abstracto}

conducir() {abstracto}

Coche

Conducir()

Barco

Conducir()

Clase abstract

a vehículo

Page 50: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Las clases concretas son las opuestas de las clases abstractas y significan que de estas clases es posible crear objetos y tienen implementaciones de todas las operaciones. Si la clase Vehículo a especificado una operación abstracta estas operaciones han de implementarse – y de modo diferente – en las clases derivadas coche y barco.

En las subclases se pueden redefinir operaciones. Una operación redefinida debe tener la misma signatura (tipo de retorno, nombre y parámetros) que la superclase. La operación que se ha redefinido puede ser o bien abstracta (no tiene una implementación en la superclase) o concreta (tiene una implementación en la superclase. En ambos casos, la redefinición en la subclase se utilizara en todas las instancias de esa clase. Se pueden añadir nuevas operaciones, atributos y asociaciones en las subclase.

Page 51: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Ejemplo: en la figura, muestra una clase Persona que tiene una asociación conduce.

La clase Vehículo es abstracta; esto significa que los objetos reales que la Persona conduce son de las subclases concretas Coche y Barco. Cuando la Persona ejecuta la operación de conducir, el resultado depende de que el objeto utilizado sea un coche o un barco. Aquí un objeto de una subclase actual como un objeto de una superclase y una o mas operaciones de la superclase se redefinen en la clase, recordemos que esto se llama POLIMORFISMO. El Polimorfismo significa que la implementación real utilizada dependerá del objeto sobre el que aplicaba la operación.

Page 52: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Vehículo{abstracta}

colormatricula

conducir() {abstracta}

Coche

Conducir()

Barco

Conducir()

PersonaConduce ►

Una persona tiene asociación conduce con vehículos

Page 53: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

La herencia múltiple es una forma de herencia en donde una clase hereda la estructura y el comportamiento de dos clases base. En otras palabras hay múltiples clases padre para la clase hija. La herencia múltiple, por otras parte, implica clases base múltiple. Una clase ProfesorAyudante hereda propiedades de las clases Estudiantes y Profesor que ha su vez heredan propiedades de la clase base Persona.

Page 54: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - Relaciones - GeneralizaciónGeneralización

Persona

NombreFecha nacimientoSexo

Estudiante

DirecciónDepartamento

Profesor

CategoríaDepartamento

ProfesorAyudante

Campo investigaciónTitulo

HERENCIA MÚLTIPLE

Page 55: Encapsulamiento - UML – Diagrama de Clases (java)

Relaciones - DependenciaRelaciones - Dependencia

Dependencia

Relación (más débil que una asociación) que muestra la relación entre un cliente y el proveedor de un servicio usado por el cliente.◦ Cliente es el objeto que solicita un servicio.◦ Servidor es el objeto que provee el servicio solicitado.

Gráficamente, la dependencia se muestra como una línea discontinua con una punta de flecha que apunta del cliente al proveedor.

Para resolver una ecuación de segundo grado hemosde recurrir a la función sqrt de la clase Mathpara calcular una raíz cuadrada.

Math

+pow()+sqrt()

Ecuación

Page 56: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplos

Page 57: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Punto – Circulo – Ejemplo: Punto – Circulo – TrianguloTriangulo

Desarrollar una clase llamada Punto que:Tenga dos atributos private de tipo double.Tenga un constructor con dos parámetros de tipo

double que inicialice los dos atributos.Tenga un constructor por defecto (sin

parámetros) que inicialice los dos atributos al valor que se quiera.

Tenga un getter para cada uno de los atributos.Tenga un método calcularDistanciaDesde que

recibe un parámetro de tipo Punto y que devuelve un double.

Page 58: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Punto – Circulo – Ejemplo: Punto – Circulo – TrianguloTriangulo

Punto

-X: double-Y: double

+Punto()+Punto(param1: double, param2: double)+getX(): double+getY(): double+calcularDistanciaDesde(param: Punto): double

Page 59: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Punto – Circulo – Ejemplo: Punto – Circulo – TrianguloTriangulo

Desarrollar una clase llamada Circulo que: Tenga dos atributos private de tipo Punto y double. Tenga un constructor con dos parámetros de tipo Punto y double

que inicialice los dos atributos. Tenga un constructor por defecto (sin parámetros) que inicialice los

dos atributos al valor que se quiera. Tenga un constructor con tres parámetros de tipo double que

inicialice los dos atributos. Tenga un getter para cada uno de los atributos. Tenga un método calcularDistanciaDesde que recibe un parámetro

de tipo Punto y que devuelve un double. Tenga un método calcularArea que no recibe ningún parámetro y

devuelve un double. Tenga un método calcularPerimetro que no recibe ningún

parámetro y devuelve un double.

Page 60: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Punto – Circulo – Ejemplo: Punto – Circulo – TrianguloTriangulo

Circulo

-centro: Punto-radio: double

+Circulo()+Circulo(param1: Punto, param2: Punto)+Circulo(param1: double, param2: double, param3: double)+getCentro(): Punto+getRadio(): double+calcularArea(): double+calcularPerimetro(): double+calcularDistanciaDesde(param: Punto): double

Page 61: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Punto – Circulo – Ejemplo: Punto – Circulo – TrianguloTriangulo

Desarrollar una clase llamada Triangulo que: Tenga tres atributos private de tipo Punto. Tenga un constructor con tres parámetros de tipo Punto que

inicialice los dos atributos. Tenga un constructor por defecto (sin parámetros) que inicialice los

tres atributos al valor que se quiera. Tenga un constructor con seis parámetros de tipo double que

inicialice los tres atributos. Tenga un getter para cada uno de los atributos. Tenga un método calcularDistanciaDesde que recibe un parámetro

de tipo Punto y que devuelve un double. Tenga un método calcularArea que no recibe ningún parámetro y

devuelve un double. Tenga un método calcularPerimetro que no recibe ningún

parámetro y devuelve un double.

Page 62: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Punto – Circulo – Ejemplo: Punto – Circulo – TrianguloTriangulo

Triangulo

-p1: Punto-p2: Punto-p3: Punto

+Triangulo()+Triangulo(param1: Punto, param2: Punto, param3: Punto)+Triangulo(x1: double, y1: double, x2: double, y2: double, x3: double, y3: double)+getP1(): Punto+getP2(): Punto+getP3(): Punto+calcularArea(): double+calcularPerimetro(): double+calcularDistanciaDesde(): double

Page 63: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Punto – Circulo – Ejemplo: Punto – Circulo – TrianguloTriangulo

Desarrollar una clase llamada Ejemplo1, que en su método main:Cree e inicialice dos objetos de la clase Punto y muestre la distancia entre ambos.Cree un objeto de la clase Círculo y muestre su área, perímetro y distancia a uno de los dos puntos creados al comienzo.Cree un objeto de la clase Triangulo y muestre su área, perímetro y distancia a un nuevo punto.

Page 64: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Punto – Circulo – Ejemplo: Punto – Circulo – TrianguloTriangulo

Page 65: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Asignatura – Alumno - Ejemplo: Asignatura – Alumno - ProfesorProfesor

Desarrollar una clase llamada Asignatura que:Tenga tres atributos de tipo int (el identificador ), y de tipo double (la calificación).Tenga un constructor con un parámetro de tipo int.Tenga un getter para cada uno de los atributos.Tenga un setter para la calificación.

Page 66: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Asignatura – Alumno - Ejemplo: Asignatura – Alumno - ProfesorProfesor

Asignatura

-identificador: int-calificacion: double

+Asignatura(param: int)+getIdentificador(): int+getcalificacion(): double+setcalificacion(param: double)

Page 67: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Asignatura – Alumno - Ejemplo: Asignatura – Alumno - ProfesorProfesor

Desarrollar una clase llamada Alumno que:Tenga tres atributo private de tipo Asignatura.Tenga un constructor con tres parámetros de

tipo asignatura que inicialice los tres atributos.Tenga un constructor de tres parámetros de

tipo int que inicialice los tres atributos.Tenga un getter para cada uno de los atributos.

Page 68: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Asignatura – Alumno - Ejemplo: Asignatura – Alumno - ProfesorProfesor

Alumno

-asignatura1: Asignatura-asignatura2: Asignatura-asignatura3: Asignatura

+Alumno(param1: Asignatura, param2: Asignatura, param3: Asignatura)+Alumno(param1: int, param2: int, param3: int)+getAsignatura1(): Asignatura+getAsignatura2(): Asignatura+getAsignatura3(): Asignatura

Page 69: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Asignatura – Alumno - Ejemplo: Asignatura – Alumno - ProfesorProfesor

Desarrollar una clase llamada profesor que:Tenga un método ponerNotas que recibe un

parámetro de tipo Alumno y que no devuelva nada. Pondrá una calificación aleatoria a cada una de las asignaturas del alumno.

Tenga un método calcularPromedio que reciba un parámetro de tipo Alumno y devuelva un double.

Page 70: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Asignatura – Alumno - Ejemplo: Asignatura – Alumno - ProfesorProfesor

Profesor

+ponerNotas(param: Alumno)+calcularPromedio(param: Alumno): double

Page 71: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Asignatura – Alumno - Ejemplo: Asignatura – Alumno - ProfesorProfesor

Desarrollar una clase llamada Ejemplo2 que en su método main:Cree e inicialice tres asignaturas.Cree un alumnos con tres Asignaturas.Cree un Profesor que le ponga calificaciones a los Alumnos y muestre por pantalla el promedio del Alumno.

Page 72: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Asignatura – Alumno - Ejemplo: Asignatura – Alumno - ProfesorProfesor

Page 73: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Motor – Coche - Ejemplo: Motor – Coche - GarajeGaraje

Desarrollar una clase llamada Motor que:

Tenga dos atributos private de tipo int (litros de aceite) y de tipo int (CV).

Tenga un constructor con un parámetro de tipo int para los CV. Los litros de aceite por defecto serán 0.

Tenga un getter (entrada) para cada uno de los atributos.

Tenga un setter para los litros.

Motor

-CV: int-aceite: int

+Motor()

Page 74: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Motor – Coche - Ejemplo: Motor – Coche - GarajeGaraje

Desarrollar una clase llamada Coche que:Tenga un atributo private de tipo Motor, un

atributo de tipo String (marca), otro de tipo String (modelo) y otro de tipo double con el precio acumulado con las averías.

Tenga un constructor con dos parámetros de tipo String que inicialice la marca y el modelo.

Tenga un getter (entrada) para cada uno de los atributos.

Un método acumularAveria que incrementará el importe gastado en averías.

Page 75: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Motor – Coche - Ejemplo: Motor – Coche - GarajeGaraje

Coche

-motor: Motor-marca: string-modelo: string-precioAverias: double

+Coche(param1: string, param2: string)+getMotor(): Motor+getMarca(): string+getModelo(): string+getPrecioAveria(): double

Page 76: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Motor – Coche - Ejemplo: Motor – Coche - GarajeGaraje

Desarrollar una clase llamada Garaje que:Tendrá tres atributos, un coche, un String con la avería

asociada y el número de coches que ha ido atendiendo.El garaje solo podrá atender a un coche en cada

momento. Controlar esta premisa.Tenga un método aceptarCoche que recibe un

parámetro de tipo Coche y la avería asociada. El garaje solo podrá atender a un coche en cada momento. Si ya esta atendiendo uno, que devuelva un false.

Tenga un método devolverCoche que dejara al garaje en estado de aceptar un nuevo coche.

Page 77: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Motor – Coche - Ejemplo: Motor – Coche - GarajeGaraje

Garaje

+coche: coche+aveia: string+numCochesAtendidos

+aceptarCoche(param1: Coche, param2: string)+devolverCoche()

Page 78: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Motor – Coche - Ejemplo: Motor – Coche - GarajeGaraje

Desarrollar una clase llamada Ejemplo3 que en su método main:Cree un garaje.Cree 2 coches.El garaje irá cogiendo los coches y devolviéndolos, acumulando un importe aleatorio (Math.random()) de la avería tratada.Si la avería del coche es “aceite” incrementar en 10 los litros de aceite.Los coches entrarán al menos 2 veces en el garaje.Mostrar la información de los coches al final del main.

Page 79: Encapsulamiento - UML – Diagrama de Clases (java)

Ejemplo: Motor – Coche - Ejemplo: Motor – Coche - GarajeGaraje