100% encontró este documento útil (2 votos)
7K vistas

Encapsulamiento - UML - Diagrama de Clases (Java)

Este documento presenta conceptos clave de programación orientada a objetos como encapsulamiento, diagramas de clases UML y relaciones entre clases. Explica que el encapsulamiento permite ocultar información de una clase mediante niveles de acceso como privado y público. También describe diagramas de clases UML, incluyendo la notación para clases, atributos, operaciones y relaciones como asociación y generalización.

Cargado por

ianverster
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (2 votos)
7K vistas

Encapsulamiento - UML - Diagrama de Clases (Java)

Este documento presenta conceptos clave de programación orientada a objetos como encapsulamiento, diagramas de clases UML y relaciones entre clases. Explica que el encapsulamiento permite ocultar información de una clase mediante niveles de acceso como privado y público. También describe diagramas de clases UML, incluyendo la notación para clases, atributos, operaciones y relaciones como asociación y generalización.

Cargado por

ianverster
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 79

Lenguaje de

Programación I

Ing. Gerald Basurco Zapata


• Encapsulamiento

• UML – Diagram
a de Clases

• Ejemplos

Tema 4
Encapsulamiento
El encapsulamiento permite a una clase ocultar su información al
exterior
Para 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.

Encapsulamiento
No olvidar:

Nivel de Descripción
acceso
private Atributos y métodos accesibles solo por la clase que las define

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


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

Encapsulamiento
Continuando, cree una clase ejecutable Encapsulamiento (es
ejecutable porque en ella esta el método main) y escriba:
public class Encapsulamiento
{ Como se ve no
public static void Main() tenemos acceso
{ desde el exterior a
Padre unPadre = new Padre(); la información de
unPadre; la clase Padre
}
}

 A quien pertenecen los métodos que se listan??


 Si los atributos de la clase Padre son privados, como accedo a
ellos??

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

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

Ejecute la clase Encapsulacion y vea el resultado

Encapsulamiento
Defina los siguientes constructores:

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

Ejecute la clase Encapsulación y vea el resultado

Encapsulamiento
 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:

Encapsulamiento
No es
accesible
debido al
nivel de
protección
UML – Diagrama de 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

Relaciones 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…

Relaciones entre Clases


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

Relaciones entre Clases - Tipos


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

UML (Unified Modeling Language)


UML combina notaciones provenientes desde:
 Modelado Orientado a Objetos Modelado de Datos
 Modelado 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 complejo
 Especificar el comportamiento deseado del sistema
 Comprender mejor lo que estamos construyendo
 Descubrir oportunidades de simplificación y reutilización

UML (Unified Modeling Language)


State
State
Use Case Diagramas de
Diagrams
Use Case Diagrams State
Use Case Diagramas de
Diagrams Clases State
Use Case Diagrams Diagramas de
Diagrams
Diagramas de
Diagrams Casos de Uso Diagrams
Diagrams Objetos
Secuencia

Scenario State
Scenario State
Diagramas de
Diagrams Diagramas de
Diagrams
Diagrams Diagrams
Colaboración Modelos Componentes

Scenario Component
Scenario Component
Diagramas
Diagrams de
Diagramas de
Diagrams Diagrams
Diagrams Distribución
Estados Diagramas de
Actividad

Diagramas de UML
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.

Diagrama 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

Diagrama de Clases
Atributos
importantes

Operaciones
importantes

Notación de una Clase

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

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

Diagrama de Clases
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.

Relaciones
 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.

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

Usa ►
Programador Computadora

Un Programador utiliza (Usa) una computadora.

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

recibe un
Estudiante * *
Curso

recibe un
Juan:Estudiante Matemáticas:Curso
rec
i be
un

María:Estudiante recibe un Historia:Curso

Relaciones - 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

Arequipa:Aeropuerto Tacna:Aeropuerto

Los aeropuertos se enlazan a otros


Aeropuerto aeropuertos.
Se conoce como auto-asociación

Relaciones - Asociación
Etiquetas

Utiliza ►
Usuario tiene Computadora

Un usuario usa una computadora.

Relaciones - 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
1 Uno y sólo uno
0..1 Cero a uno
N..M Desde N hasta M
* Muchos
0..* Cero a muchos
1..* Uno a varios

Relaciones - Asociación
Multiplicidad

◄Trabaja para
* 1..*
Empresa Persona
empleador empleado

Emplea - a►

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.

Relaciones - 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..*.

Multiplicidad

◄Trabaja para
* 1..*
Empresa Persona
empleador empleado

Emplea - a►

Nombre de Rol Nombre de la asociación

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

posee 0..*
Persona Carros

Una Asociación navegable indica que una


persona puede poseer muchos carros.

Relaciones - Asociación
pertenece a
Profesor * 1..*
Escuela
Todo profesor pertenece a una o más escuela .
A una escuela pueden pertenecer varios
profesores.

Vive con
Nieto * 0..4
Abuelo
Todo nieto vive, hasta con sus cuatro abuelos
Un abuelo puede vivir con varios nietos

◄ Corresponde a
Cuenta 1 *
Operación
Una operación corresponde a una cuenta.

Relaciones - Asociación
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.

Clases 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 Cliente
* operación *
propietario nombre
dirección contraseña

Operación CA
tipo_operación
fecha Clase asociación
hora

Clases Asociadas
Compañía Persona
* trabaja para *
nombre nombre
dirección dni

Trabajo
salario
departamento El trabajo realizado
gerente por una persona en
una compañía es una
clase

Clases Asociadas
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

Relaciones - Agregación
*
Todo Parte
*
Universidad Facultad
Tiene

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)

Relaciones - Agregació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 Cuenta
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 Cuenta
Cuenta Cuenta
clase derivada, donde existe una Corrient
Ahorro Sueldo
clase “general” y diferentes clases e
“especialización”.
Generalización de la clase Cuenta

Relaciones - Generalización
Frase

Adjetivo Nombre Verbo

Generalización en formato de jerarquía

Relaciones - Generalizació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.).

Relaciones - Generalizació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.

Relaciones - Generalizació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.

Relaciones - Generalización
Una jerarquía de clases vehículo
Vehículo (abstracta) La clase coche es una
{abstract} subclase de vehículo y es una
superclase de coche deportivo,
coche turismo y coche camión

Coche Avión

Coche Coche Avión Avión Avión de


Camión
deportivo turismo militar transporte pasajeros

Relaciones - Generalizació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.

Relaciones - Generalizació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).

Relaciones - Generalización
Vehículo
{abstracto}
Clase
abstracta
vehículo
conducir() {abstracto}

Coche Barco

Conducir() Conducir()

Relaciones - Generalizació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.

Relaciones - Generalizació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.

Relaciones - Generalización
Vehículo
{abstracta}
Conduce ► color
Persona
matricula

conducir() {abstracta}

Coche Barco
Una persona tiene
asociación conduce
con vehículos Conducir() Conducir()

Relaciones - Generalizació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.

Relaciones - Generalización
Persona
Nombre
Fecha nacimiento
Sexo

Estudiante Profesor

Dirección Categoría
Departamento Departamento

ProfesorAyudante

Campo investigación
Titulo
HERENCIA MÚLTIPLE

Relaciones - Generalización
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 Math
ecuación de segundo
grado hemos
+pow() de recurrir a la función
+sqrt() sqrt de la clase Math
para calcular una raíz
cuadrada.

Relaciones - Dependencia
Ejemplos
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.

Ejemplo: Punto – Circulo – Triangulo


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

Ejemplo: Punto – Circulo – Triangulo


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.

Ejemplo: Punto – Circulo – Triangulo


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

Ejemplo: Punto – Circulo – Triangulo


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.

Ejemplo: Punto – Circulo – Triangulo


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

Ejemplo: Punto – Circulo – Triangulo


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.

Ejemplo: Punto – Circulo – Triangulo


Ejemplo: Punto – Circulo – Triangulo
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.

Ejemplo: Asignatura – Alumno - Profesor


Asignatura
-identificador: int
-calificacion: double
+Asignatura(param: int)
+getIdentificador(): int
+getcalificacion(): double
+setcalificacion(param: double)
Ejemplo: Asignatura – Alumno -
Profesor
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.

Ejemplo: Asignatura – Alumno - Profesor


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

Ejemplo: Asignatura – Alumno -


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

Ejemplo: Asignatura – Alumno - Profesor


Profesor

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

Ejemplo: Asignatura – Alumno -


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

Ejemplo: Asignatura – Alumno - Profesor


Ejemplo: Asignatura – Alumno -
Profesor
Desarrollar una clase llamada
Motor que: Motor
 Tenga dos atributos private de
tipo int (litros de aceite) y de -CV: int
tipo int (CV). -aceite: int
 Tenga un constructor con un
+Motor()
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.

Ejemplo: Motor – Coche - Garaje


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.

Ejemplo: Motor – Coche - Garaje


Coche

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

+Coche(param1: string, param2: string)


+getMotor(): Motor
+getMarca(): string
+getModelo(): string
Ejemplo: Motor – Coche -
+getPrecioAveria(): double

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

Ejemplo: Motor – Coche - Garaje


Garaje

+coche: coche
+aveia: string
+numCochesAtendidos

+aceptarCoche(param1: Coche, param2: string)


+devolverCoche()

Ejemplo: Motor – Coche -


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

Ejemplo: Motor – Coche - Garaje


Ejemplo: Motor – Coche -
Garaje

También podría gustarte