Está en la página 1de 27

PROGRAMACIÓN ORIENTADA A

OBJETOS
Definición de Clases
Jack Márquez
jdmarquez@uao.edu.co
CLASE

Una clase, define un conjunto de elementos que tienen atributos y


comportamientos comunes.
Pueden ser “cosas” tangibles: Pueden ser “cosas” intangibles:

MATRICULA
VEHICULO
COMPRA

CONSULTA
ESTUDIANTE
MÉDICA

EDIFICIO
DEFINICIÓN DE UNA CLASE
Para definir una clase, se establece: Nombre, Atributos o Características y Métodos
o Comportamientos.
OBJETO
• Son instancias (o casos) particulares de las clases.
• Todo objeto tiene los mismos atributos y métodos que la clase que lo define.
• Un objeto da valores particulares a los atributos de la clase.
Objeto: Ferrari
Modelo: 2014
Peso: 585
VelocidadMaxima: 360

Objeto: ToroRosso
Modelo: 2014
Peso: 597
VelocidadMaxima: 362
DEFINICIÓN DE CLASE EN UML
• En UML una clase se representa como un rectángulo con tres secciones:
(1) nombre, (2) atributos, (3) métodos.
• NOMBRE: Se escribe en singular y debe representar claramente a la clase.
• ATRIBUTOS: se escriben en singular, con un nombre corto. Debe indicarse
el tipo al que pertenecen. Debe indicarse la visibilidad.
• MÉTODO: es un verbo en infinitivo, debe indicarse los parámetros y el
tipo de dato que retorna. Debe indicarse la visibilidad. Ejemplo:

enlazar(int, int) : boolean El método enlazar, recibe dos datos de


tipo entero y retorna un booleano.
Visibilidad
• La visibilidad de un elemento (clase, atributo o método) establece quienes
pueden tener acceso al elemento.
– public: Cualquier clasificador externo puede emplear el elemento
declarado público. Por ejemplo: si el atributo nombre de la clase
Estudiante se declara público, indica que cualquier método de otra
clase puede modificarlo o consultarlo. El símbolo es +.
– private: Solamente otros elementos dentro del mismo clasificador
pueden tener acceso al elemento declarado privado. Por ejemplo: si el
atributo nombre de la clase Estudiante se declara privado, solamente
otros métodos de la misma clase Estudiante pueden modificarlo o
consultarlo. El símbolo es -.
Escritorio
- ancho : float
- alto : float
- profundidad : float
- material : String Es una buena práctica de
- numero_cajones : int programación que los atributos
sean privados y los métodos
+ retornaMedidas() : String públicos.
+ retornaNumCaj () : int
+ calculaVolumen() : float
Métodos Especiales
CONSTRUCTOR
• No es considerado como un método.
• Solamente se ejecuta cuando se instancian (crean) objetos de la clase.
• Su propósito es asignar valores iniciales a los atributos, cuando se crea un objeto
de la clase.
• Puede contener toda clase de instrucciones.
• En JAVA: lleva el mismo nombre de la clase y no tiene tipo de retorno.
• Si no se escribe, JAVA incluye un constructor por defecto que no tiene parámetros
(este se adiciona al momento de compilar, entonces nunca se ve en el código).
Debe definirse una clase caja que contenga las
medidas de una caja y pueda determinar el
volumen de la misma.

EJEMPLO
Modelado

Caja
+ largo: float
+ ancho: float
+ alto : float

+ Caja (float, float, float)

+ calcularVolumen(): float
Implementación
public class Caja {

private double largo;


private double ancho;
Caja private double alto;
- largo: double
public Caja(double largox, double anchoy, double altoz) {
- ancho: double largo = largox;
- alto : double ancho = anchoy;
alto = altoz;
+ Caja (double, double, double) }

+ calcularVolumen(): double public void calcularVolumen() {


double vol;
vol = largo * ancho * alto;
return vol;
}
}
setter y getter
• El dejar los atributos privados, generaría problemas para acceder a ellos, ya que
solamente se pueden consultar o modificar desde otros métodos de la misma
clase.
• Para resolver el problema se incluyen unos métodos que ayudan en estas labores:
– setter: permite ingresar un valor al atributo correspondiente. Recibe
como parámetro un dato del mismo tipo del atributo y no retorna
nada.
– getter: permite recuperar o consultar el valor del atributo
correspondiente. No recibe parámetros y retorno un dato del mismo
tipo del atributo.
• setter
atributo: String cedula 
public void setCedula(String cedula)
atributo: String nombre 
public void setNombre(String nombre)
• getter
atributo: String cedula 
public String getCedula( )
atributo: String nombre 
public String getNombre( )

Patrón de diseño: Bean


Definir una clase número que permita determinar si el
número contenido es positivo o no y si es múltiplo de otro
número dado.

EJEMPLO
Modelado

Numero
+ numero : int

+ isPositivo () : boolean
+ multiploDe (int): boolean
Modelado

Numero Numero
+ numero : int - numero : int

+ isPositivo () : boolean + setNumero (float): void


+ multiploDe (int): boolean Buena Práctica + getNumero (): int
+ isPositivo (): boolean
+ multiploDe (int): boolean
Implementación

Numero
- numero : int

+ setNumero(int) : void
+ getNumero () : float
+ isPositivo () : boolean
+ multiploDe (int): boolean
Implementación

Numero

?
- numero : int

+ setNumero(int) : void
+ getNumero () : float
+ isPositivo () : boolean
+ multiploDe (int): boolean
RELACIONES ENTRE CLASES

• Entre las clases pueden existir varios tipos de relaciones, entre ellas:
– DEPENDENCIA: Es una relación de uso, implica que una clase utiliza a
la otra, sin embargo, un cambio en la especificación da una clase
puede afectar a aquella que la utiliza.
Se representa con una flecha punteada

– ASOCIACIÓN: Especifica que los objetos de una clase incluyen o


trabajan con objetos de otra. Puede incluir nombre y multiplicidad
(para indicar cuántos objetos están incluidos en la relación.
Se representa con una línea continua.
RELACIONES ENTRE CLASES

• En el desarrollo de una aplicación, debe tenerse claro que cada Clase


contenga los atributos y métodos que le corresponden.
• Esta característica permite la reutilización de código y por consecuencia,
se agiliza el desarrollo de aplicaciones.
• En cada aplicación quedará una clase PRINCIPAL que se encarga de utilizar
las otras clases. En este caso, hay una relación de dependencia entre la
clase Principal y la(s) clase(s) que ella utiliza.
Definir una clase número que permita determinar:
si el número contenido es positivo o no
si es múltiplo de otro número dado.
EJEMPLO
Modelado

Principal Numero
- numero : int
+ main(String arg[]): void
+ setNumero (int): void
+ getNumero (): int
+ isPositivo (): boolean
+ multiploDe (int): boolean
Implementación

public class Principal


{
public static void main (String[] arg)
{
Numero num = new Numero();
int n_1= Integer.parseInt(JOptionPane.showInputDialog(“Digite el numero”));
num.setNumero(n_1);
if ( num.isPositivo() ) {
System.out.pritln(“El número es positivo”);
}
int n_2 = Integer.parseInt(JOptionPane.showInputDialog(“Digite otro numero”));
if ( num.isMultiploDe(n_2)) {
System.out.println(num.getNumero() + “ y “+n_2+” son multiplos”);
}
}
}
Presente una clase que permita manejar un Televisor, incluya los atributos
que considere pertinentes (4), adicionalmente la clase debe estar en
capacidad de realizar las siguientes operaciones:
• Cuando se crea un televisor se le indican los canales que tiene
habilitados (pueden ser varios y no necesariamente consecutivos, por
ejemplo: 1, 4, 5, 6, 10, 11, 20, 45,..) y se le indica cuantos niveles de
volumen tiene disponibles.
• Por defecto el televisor iniciar en el primer canal y en el nivel de volumen
medio (si hay 10 niveles disponibles, iniciaría en el 5).
• Cambiar a un canal específico, si ese canal no está habilitado, se le
indicará al usuario y el televisor quedará en el canal que estaba.
EJEMPLO • Cambiar al canal siguiente o anterior, obviamente si es el último canal al
pasar al siguiente quedará en el primero y si es el primero al devolverse
al anterior, quedará en el último.
• Al modificar el canal, debe indicarse en qué canal quedó el televisor.
• Subir o bajar el volumen, considerando los límites del televisor.
• Al subir o bajar el volumen debe indicar en cuál nivel de volumen quedó
el televisor.
1. Desarrollar una clase denominada CUENTABANCARIA que
permite llevar el control de una cuenta bancaria. Esta clase
debe permitir realizar las siguiente operaciones:
• Crear una cuenta con un saldo inicial, la fecha en que se
abre la cuenta, el nombre y cedula de la persona dueña
de la cuenta.
• Consultar cual es la fecha de la última transacción
realizada, sea consignación o retiro.
• Retirar dinero de la cuenta, siempre que se tenga saldo
disponible.
• Consignar dinero en la cuenta.
EJERCICIOS • Consultar el saldo de la cuenta en cualquier momento.
2. Desarrollar una clase para el manejo de libros en una
biblioteca. Cada libro tiene los siguientes datos: titulo, tema
(hasta 3 diferentes), autor (hasta 4 diferentes), isbn, codigo.
En la aplicación, debe ser posible realizar las siguientes
operaciones:
• Prestar un libro, en este caso el libro debe quedar en
estado de préstamo.
• Devolver un libro, en este caso el libro debe volver a
estado disponible.
• Adicionar un tema al libro, si tiene menos de 3.
• Adicionar un autor al libro, si tiene menos de 4.
EJERCICIOS
• Crear un libro.
• Verificar si un autor dado, es autor del libro.

También podría gustarte