Está en la página 1de 30

CONCEPTOS

BÁSICOS DE
PROGRAMACIÓN
ORIENTADA A
OBJETOS
 REUTILIZACIÓN:
La reutilización o reusabilidad es la propiedad
por la que el software desarrollado puede ser
utilizado cuantas veces sea necesario en otros
programas.

En la programación estructurada, se le llama


librería a los repositorios de funciones y
constantes que el programador utiliza en el
desarrollo de un determinado programa. Dichas
funciones eran utilizadas cuantas veces el
programador lo requería.
Las ventajas de la reutilización son evidentes. El
ahorro de tiempo es una de las características
más importantes debido a que si una clase
existente y agregarle atributos métodos para
crear nuevas clases basadas en las clases
originales.

Aceptar
Aceptar
Los mecanismos típicos de la reutilización son:
 Herencia
 Interfaces de clases
 Herencia por delegación
 Herencia privada
 Parametrización
La facilidad para reutilizar clases (y en consecuencia
objetos) es una de las propiedades fundamentales que
justifican el uso de la programación orientada por
objeto. Por esta razón los sistemas y, en particular, los
lenguajes orientados por objetos suelen venir
provistos de un conjunto (biblioteca) de clases
predefinidas, que permiten ahorrar tiempo y esfuerzo
en el desarrollo de cualquier aplicación.
En el caso de Java, estas bibliotecas de clases se
llaman paquetes y la referencia a dichos paquetes
se hace al principio del archivo en el cual se
utilizarán las clases necesarias. Por ejemplo si se
quiere tener acceso a las clases que se
encuentran en el paquete Abstract Window
ToolKit (AWT) y el paquete de Applet se podría
escribir el siguiente código al principio del
archivo:
import java.awt.*;
import java.applet.*;
El paquete AWT sirve para efectuar la
interacción entre el usuario y una ventana en un
applet y el paquete applet sirve para generar
aplicaciones que se ejecuten en un browser.

La palabra reservada import se utiliza para poder


usar las clases y métodos que se encuentran en la
clase que está descrita después de dicha palabra.
El asterisco (*) al final de la instrucción indica
que se utilizarán todos los métodos que se
encuentran declarados en dicho paquete.
 ENCAPSULAMIENTO:
El encapsulamiento o encapsulación es la
propiedad que permite asegurar que el contenido
de la información o de los miembros de una clase
permanezca oculta al mundo exterior del objeto
creado como instancia de una clase determinada.

La encapsulación es en esencia el proceso de


ocultar todos los secretos de un objeto que no
contribuyen a sus características esenciales.
Permite la división de un programa de módulos,
los cuales se implementan mediante clases, de
forma que una clase representa la encapsulación
de una abstracción.
En la práctica, el encapsulamiento se puede hacer
utilizando el alcance de los atributos de la clase.
El alcance de un método o de un atributo se
refiere a los sitios desde los cuales se puede tener
acceso o utilización de los métodos y atributos de
la clase.

En Java hay varios tipos de alcance:


 Public. Las clases, métodos y atributos que
tengan Public como alcance de clase podrán ser
utilizados por cualquier clase externa y desde
cualquier módulo que haga referencia a la clase.
 Private. Los métodos y atributo que tengan
Private como alcance de clase únicamente podrán
ser utilizados por la clase que los declaró o a una
subclase.
 Protected. Los métodos, clases y atributos que
tengan como alcance Protected sólo podrán ser
utilizados por las clases que se encuentren en el
mismo paquete.
 Public, Private y Protected. Son palabras
reservadas de Java usadas para determinar el
alcance de una clase, un método o un atributo y
se colocan en la declaración antes del tipo del
método, atributo o clase.
La forma general de establecer el alcance de
una clase es:
tipo_de_alcance class nombre_de_la_clase
{
// ….
}
 POLIMORFISMO:
Es la propiedad que indica, literalmente, la
posibilidad de que una unidad tome muchas
formas. En términos prácticos, el polimorfismo
permite referirse a objetos de clases diferentes ,
mediante el mismo elemento de programa y
realizar la misma operación de diferentes formas,
según sea el objeto que se referencie en ese
momento.
Por ejemplo, cuando se describe la clase
Vehículo se puede observar que Aumentar
Velocidad es una función u operación de un
Vehículo, de modo que cada tipo de Vehículo
debe realizar la operación o función de
Aumentar Velocidad. Por otra parte una moto,
un helicóptero, un avión, automóvil o bicicleta,
aumenta su velocidad de formas diferentes.
El polimorfismo implica la posibilidad de tomar
un objeto de un tipo (vehículo por ejemplo) e
indicarle que ejecute Aumentar Velocidad.
Esta acción se ejecutará de diferentes formas,
según sea el objeto Vehículo sobre el cual se
aplica.

El polimorfismo adquiere su máxima expresión


en la derivación o extensión de clases, es decir,
cuando se obtiene una clase a partir de una clase
ya existente, mediante la propiedad de derivación
de clase o herencia.
 HERENCIA:
La herencia es la propiedad que le permite a los
objetos ser construidos a partir de otros objetos.
Las clases básicas se dividen en subclases. La
clase vehículo se divide en subclase automóvil,
motocicleta, camión, entre otros.

El principio en que se basa la división de clases es


la jerarquía compartiendo características
comunes. Por ejemplo todos lo vehículos citados
anteriormente tienen motor y ruedas, que son
características comunes.
La herencia supone una clase base (superclase) y
una jerarquía de clases que contienen clases
derivadas (subclases) de la clase base. Las clases
derivadas pueden heredar el código y los
miembros de la clase base, añadiendo su propio
código especial y dados a ella, incluso cambiar los
miembros o métodos que necesita que sean
diferentes.

 HERENCIA SIMPLE:
En esta jerarquía cada clase tiene como máximo
una sola superclase. Esta clase herencia permite
que una clase herede las propiedades de su
superclase en una cadena jerárquica.
En términos de UML, el diagrama estático de
clases sería
Persona
Char nombre [50];
Int edad;
Car sexo;
Char documento [20];

Empleado Estudiante
Int carnet [20]; Car Facultad [20];
Double sueldo; Int puntajeICFES;
 HERENCIA MULTIPLE:
En la herencia múltiple una subclase puede tener
varias superclases. Java no soporta herencia
múltiple. Esta característica es soportada
únicamente por C++ y Smalltalk.

La razón de no soporte a herencia múltiple es que


puede confundir al programador en cuanto a
nomenclatura de nombres.
Persona

Char nombre [50];


Int edad;
Char sexo;
Char documento [20];

Empleado Estudiante
Char Facultad [20];
Int carnet [20];
Int puntajeICFES;
Double sueldo;

EmpleadoEstudiante
DIAGRAMA ESTATICO DE CLASES
La diferencia en este tipo de diagrama se lleva a
cabo en la fase de diseño del ciclo de desarrollo. El
diagrama estático de clases describe gráficamente
las especificaciones de las clases de software y las
interfaces en una aplicación.
Normalmente un diagrama estático de clases
contiene la siguiente información:
 Clases, asociaciones y atributos.

 Interfaces, con sus operaciones y constantes.

 Métodos.

 Información sobre los tipos de los atributos.

 Navegabilidad.

 Dependencias.
Un diagrama de este tipo contiene las
definiciones de las entidades del software en vez
de conceptos del mundo real. Usualmente se
siguen los siguientes pasos para realizar un
diagrama estático de clases.
1. Identificar todas las clases que participan
en la solución del software. La identificación
de las clases se basa en la elaboración de un
listado de las clases que intervienen en la
solución del software.
2. Dibújelas en un diagrama de clases. El
dibujo de las clases en un diagrama de clases
consiste en la representación grafica de UML de
las clases mostradas a continuación.
Nombre de la clase

Atributos

Métodos

3. Agregue los nombres de los métodos. En


esta sección de la clase se relaciona el listado de
los métodos con los cuales se puede interactuar
con la clase. El prototipo de un método en el
listado debe ser el siguiente:
TipoDelMétodo NombreDelMétodo (ListaDeParametros)
La lista de los parámetros es el conjunto de los datos
que necesita el método para poderse ejecutar.
Dicho listado esta escrito dentro de dos paréntesis: ().
Cada parámetro en la lista está separado por el
carácter coma (,) y esta compuesto por el tipo de dato y
el nombre. Por ejemplo:
(int numeroUno, int NumeroDos, String cadena)
4. Agregue las asociaciones y relaciones de
dependencia entre las clases del diagrama. Las
relaciones y asociaciones son la forma como
interactúan unas clases con otras.
 RELACIONES
Las relaciones en un diagrama estatico de clases
hace que dos o muchas clases se relacionen entre
sí dando un significado de pertenencia o
asociación según sea el caso.
Una asociación es una conexión, relación (enlace)
entre dos o más clases; normalmente, una
relación es bidireccional.
Una relación representada como una línea entre
conceptos con el nombre de la asociación, como
se muestra a continuación.
VEHIVULO PERSONA

La asociación tiene un nombre que, por lo


general, es un verbo; cuando el diagrama de
clases se modela, se debe reflejar el sistema que
se está construyendo, y los nombres o etiquetas
ayudan a entender el modelo; ejemplo:
Utiliza
ESTUDIANTE COMPUTADOR
 AGREGACIÓN
La agregación es un caso especial de relación o
asociación e indica que las partes relacionadas
forman parte de un todo.
En lenguaje UML la relación de composición se
ilustra con un rombo y una línea que relaciona a
dos clases. La clase que tiene el lado del rombo
tiene un, consta de, contiene a la clase del lado de
la línea. Ejemplo:

TIENE
UNIVERSIDAD FACULTAD
En la figura se muestra la relación entre la clase
Universidad y la clase Facultad. En este caso una
universidad tiene varias facultades y si se agrega
una facultad seguirá existiendo la universidad
como un todo compuesto de facultades.
Existen dos (2) tipos de composición: débil y
fuerte. Algunos autores denominan a la relación
débil como agregación y a la fuerte composición.
Débil:
La agregación débil implica que la clase que
forma parte del todo podría no existir y la clase
que contiene a la otra seguiría existiendo.
Ejemplo:
TIENE
CARRO TECHO

En la relación de la figura se muestra la


agregación débil entre la clase Carro y Techo. En
este caso si no existe la clase Techo, la clase
Carro puede seguir existiendo (existen carros sin
techo). La clase Techo hace parte de la clase
Carro pero si no existirá la clase Techo, la clase
Carro podría seguir generando servicios y
funcionando normalmente.
Existe un caso especial cuando hay una
agregación compartida; las partes pueden ser
partes en cualquier todo. Por ejemplo cuando una
Empresa tiene dependencia y las dependencias
están compuestas por diferentes personas. Una
persona puede ser miembro de mucha
dependencias, es decir que las personas son
partes compartidas. La agregación es compartida,
como lo vemos en la siguiente figura.

DEPENDENCIA PERSONA
MIEMBROS
Fuerte:
En el caso de la composición fuerte, existe una
clase que hace parte física de la otra y que por lo
tanto debe existir para que exista la clase de la
cual hace parte. La dependencia existente entre
ambas clases hace que las partes que viven en el
todo se destruyen en el momento en el que el todo
se destruye. En la figura se muestra la relación
existente entre dos (2) clases: naipe y carta.

NAIPE CARTA
TIENE
En la figura se muestra una relación de
composición fuerte entre la clase Naipe y la clase
Carta. La clase Carta hace parte de un todo que
es la clase Naipe y si no existe, por lo menos, una
instancia de la clase Carta, las clase naipe no
puede existir. En el momento en el que se
destruye la clase naipe todas sus partes que
impliquen una composición fuerte serán
destruidas también.
Veamos otro ejemplo, la clase Automóvil tiene
una composición fuerte entre la clase llanta y la
clase Asientos. Un Automóvil tiene muchas
llantas incluso las de repuesto, y también tiene
asientos; en este caso el Automóvil debe tener por
lo menos 4 llantas y un asiento de lo contrario la
clase mayor no existiría.
AUTOMOVIL LLANTA
TIENE

TIENE

ASIENTO