Vous êtes sur la page 1sur 38

CONCEPTOS CLARIFICATORIOS

PROGRAMACION ORIENTADA A
OBJETOS

• PROGRAMACION ORIENTADA A OBJETOS


Terminología a usar
• Clase Define las características del Objeto.
• Objeto Una instancia de una Clase.
• Propiedad Una característica del Objeto, como el color.
• Método Una capacidad del Objeto, como caminar.
• Constructor Es un método llamado en el momento de la
creación de instancias.
• Herencia Una Clase puede heredar características de otra
Clase.
• Encapsulamiento Una Clase sólo define las características del
Objeto, un Método sólo define cómo se ejecuta el Método.
• Polimorfismo Diferentes Clases podrían definir el mismo
método o propiedad.
Modificadores de acceso
• Se pueden poner a una clase o miembro
(campo o método) indican desde dónde es
accesible.
• Modificadores de acceso para atributos y
metodos:
• public: accesible desde todo el programa
• private: accesible sólo desde esa clase
• protected: accesible desde el paquete clase
padre y desde sus subclases
Conformación de Programación
orientada a objetos
• La clase es la unidad básica de estructuración en un
lenguaje orientado a objetos
• Está formada por miembros:
atributos (también llamados campos): almacenan el
estado
métodos: definen el comportamiento

Una clase es una descripción de un conjunto de objetos con


los mismos atributos y comportamiento
• public class UnaClase { atributos, constructores, métodos }
• Un objeto es una instancia o ejemplar concreto de una
clase
Creación e inicialización de objetos
• Los objetos se crean con el operador new:
– UnaClase obj = new UnaClase();
• Los constructores son métodos especiales que se
llaman igual que la clase no tienen tipo de retorno
• Una clase puede tener varios constructores con
diferentes parámetros
– public UnaClase() { ... }
– public UnaClase(int i) { ... }
– public UnaClase(boolean b, int i) { ... }

• Si y sólo si no definimos constructor, la clase tendrá el


constructor por defecto (constructor sin parámetros)
Inicialización de los atributos
• Cuando se crea un objeto sus atributos se inicializan en 3
etapas:
• 1.Se asigna a cada atributo su valor por defecto
– - tipos numéricos (int, double, ...): 0 (o 0.0)
– - Caracteres (char): carácter nulo
– - Booleanos (boolean): false
– - Referencias a objetos (String, otras clases): null

• 2.Si la declaración del atributo contiene un inicializador,


éste es evaluado y asignado
– private int numRuedas = numCoches * 4;
• 3.Se ejecuta el constructor de la clase, que puede cambiar
el valor de los atributos que desee
Tipos primitivos de datos
• Cuando se declarara una variable el
compilador reserva un área de memoria para
ella
• Cuando se asigna un valor, éste es escrito en el
área reservada

• La asignación entre variables significa copiar el


contenido de una variable en la otra
Referencias y objetos
• Cuando se declara una variable “objeto” la
situación es diferente
• Si no se usa el operador new sólo se crea una
referencia a objeto
• El espacio en memoria del objeto se reserva
con el operador new
Asignaciones entre objetos
• La asignación entre objetos sólo copia
referencias, después de la copia ambas
referencias apuntan al mismo objeto
Recolector de basura
(Garbagge collector)
• La memoria ocupada por un objeto se reserva con el
operador new no existe ningún operador para liberar la
memoria de un objeto que no se va a usar más
• La liberación de memoria la realiza el Recolector de
Basura de forma automática, el recolector va contando
el número de referencias que “apuntan” a cada objeto
• Cuando un objeto no está apuntado por ninguna
referencia, se convierte en “basura” (no va a poder ser
utilizado nunca más) en los periodos de inactividad del
sistema, el recolector reincorpora la “basura” a la
memoria disponible
Ejemplo de recolección de basura
Control de acceso
• Los sistemas software pueden llegar a ser muy
complejos. Para abordar con éxito su
desarrollo es necesario aplicar los principios
de:
– modularidad: descomposición del sistema en un
conjunto de “piezas” poco acopladas
– ocultamiento de información: se ocultan los
detalles de implementación de las “piezas”
Uso común de los modificadores de
acceso
• Lo común es que una clase:
– tenga todos sus atributos privados
– sólo proporcione los métodos públicos
estrictamente necesarios

De esta forma el estado del objeto sólo puede


cambiar a través de unos puntos de entrada bien
definidos
Ejemplo de modificadores de acceso
Concepto sencillo Herencia
• ¿En qué consiste?
• Existen dos clases, a las que llamaremos padre
(superclase o clase base) e hija (subclase o
clase derivada)
• Al igual que las herencias en la vida real, la
clase hija pasa a tener lo que tiene la clase
padre Atributos Métodos Un objeto de la clase
hija es también un objeto de la clase padre
Herencia(2)
• Al extender una clase
– se heredan todas las operaciones del padre
– se puede añadir nuevas operaciones
– La nueva clase puede elegir para las operaciones
heredadas:
• redefinir la operación: se vuelve a escribir
- la nueva operación puede usar la del padre y hacer más
cosas: programación incremental
- o puede ser totalmente diferente
- dejarla como está: no hacer nada
La herencia se puede aplicar múltiples veces
• da lugar a una jerarquía de clases
• El mecanismo de herencia permite definir
nuevas clases partiendo de otras ya
existentes. Las clases que derivan de otras
heredan automáticamente todos sus
comportamientos, pero además pueden
introducir características particulares propias
que las diferencian.
• La programación orientada a objetos va más
allá, permitiéndonos definir clases a partir de
otras clases ya construidas.
• Por ejemplo, las bicicletas de montaña, las de
carretera y los tándems son todos, en
definitiva, bicicletas. En términos de
programación orientada a objetos, son
subclases o clases derivadas de la clase
bicicleta.
Ejemplo herencias de clase Bicicleta
Explicación
• Las bicicletas de montaña, las de
carretera y los tándems comparten
algunos comportamientos: frenar y
cambiar la cadencia de pedaleo, por
ejemplo.
Especializaciones dentro de las clases
heredadas
• No estamos limitados a un único nivel de
herencia. El árbol de herencias o jerarquía de
clases puede ser tan extenso como
necesitemos.
• Los métodos y las variables miembro se
heredarán hacia abajo a través de todos los
niveles de la jerarquía.
• Normalmente, cuanto más abajo está una
clase en la jerarquía de clases, más
especializado es su comportamiento. En
nuestro ejemplo, podríamos hacer que la clase
bicicleta derivase de una superclase de
vehículos.
Otro ejemplo de Herencia
• Los atributos y métodos de la superclase no se
repiten en las subclases, salvo que se hayan
redefinido
Principal ventaja de realizar herencia
en Programación orientada a objetos
• Las clases derivadas o subclases proporcionan
comportamientos especializados a partir de
los elementos comunes que hereda de la clase
base.
• A través del mecanismo de herencia los
programadores pueden reutilizar el código de
la superclase tantas veces como sea necesario.
Métodos Constructores
• Un constructor es un método especial de una
clase que se llama automáticamente siempre
que se declara un objeto de esa clase.
Métodos Constructores(2)
• Cuando se crea un objeto se realizan las
siguientes operaciones de forma automática:
• 1. Se asigna memoria para el objeto.
• 2. Se inicializan los atributos de ese objeto con
los valores predeterminados por el sistema.
• 3. Se llama al constructor de la clase que
puede ser uno entre varios.
Constructores: características
• En una clase puede haber varios constructores con el
mismo nombre y distinto número de argumentos
• No se hereda.
• No puede devolver ningún valor (incluyendo void).
• Debe declararse público para que pueda ser invocado
desde cualquier parte donde se desee crear un objeto
de su clase.

[modifVisibilidad] nombreConstructor (listaParámetros){ }


Método constructor: Por defecto
• Si para una clase no se define ningún método
constructor se crea uno automáticamente por
defecto.
• El constructor por defecto es un constructor
sin parámetros que no hace nada. Los
atributos del objeto son iniciados con los
valores predeterminados por el sistema.
• nombreConstructor ( ) { }
Constructores: Ejemplo de clase sin
constructor
• public class Fecha {

private int dia;
• private int mes;
• private int año;

• public void setDia(int d) {
• dia = d;
• }
• public void setMes(int m) {
• mes = m;
• }
• public void setAño(int a) {
• año = a;
• }
• }
Continúa…
• En el ejemplo anterior no se ha definido
ningún constructor, por lo que al declarar un
objeto el compilador utilizará un constructor
por defecto.
• En este caso el método constructor por
defecto es:
• Fecha( ) { }
Ejemplo de constructor de la clase
Fecha
• public Fecha(int d, int m, int a) {
• dia = d;
• mes = m;
• año = a;
• }
Creación de objetos de la clase Fecha
• Fecha fecha1 = new Fecha(10,10,2016);
• Se crea un objeto fecha1 y se le asignan esos valores a
sus atributos.
• En este ejemplo hemos definido un método
constructor Fecha(int d, int m, int a) por lo que
también es necesario poner el método constructor por
defecto Fecha().
• Este constructor Fecha() se invocará cuando se declare
un objeto sin parámetros.
Creación de objetos con diferentes
constructores

• Fecha f1 = new Fecha();


• //se ejecuta el constructor sin parámetros

• Fecha f2 = new Fecha(1,1,2010);


• //se ejecuta el constructor con parámetros
Definición de Constructor Copia
• Se puede crear un objeto a partir de otro de
su misma clase escribiendo un constructor
llamado constructor copia.
• Este constructor copia los atributos de un
objeto existente al objeto que se está creando.
• Los constructores copia tiene un solo
argumento, el cual es una referencia a un
objeto de la misma clase que será desde el
que queremos copiar.
Constructor copia: usando el
constructor copia para los objetos
• Fecha fecha = new Fecha(1,1,2011);
• //se invoca al constructor con parámetros

• Fecha fecha1 = new Fecha(fecha);


• //se invoca al constructor copia
Constructor copia: ejemplo con la
anterior clase
• public Fecha(Fecha f) {
• dia = f.dia;
• mes = f.mes;
• año = f.año;
• }

• El constructor copia recibe una referencia al


objeto a copiar y asigna sus atributos uno a uno a
cada atributo del objeto creado.
Métodos y campos de clase (o
estáticos)
• Una clase puede tener atributos y métodos estáticos:
– no pertenecen a los objetos de la clase, sino a la clase misma
– si son atributos, sólo existe uno por clase, no uno por objeto
– la vida que tienen es la de la clase, y no la del objeto
• Nos referimos a ellos como NombreClase.miembroEstático
FINAL DE LA PRESENTACION

Vous aimerez peut-être aussi