4. Introducción al Paradigma
¿Qué es un paradigma de programación?
Un paradigma de programación es una forma o
técnica tecnológica definida, empleada para
resolver un problema.
Tipos de paradigmas: imperativo/estructurado (C,
PHP, Pascal), Orientado a Eventos (Visual Basic),
funcional (Haskell), Orientado a Objetos (Java,
C++, Python, Ruby, PHP), Orientado a Aspectos
(Java), por nombrar a algunos.
Introducción a la POO
4
5. Introducción al Paradigma
El primer lenguaje fue el Simula, en el
año 1967, esto en Noruega.
Ole-Johan Dahl y Kristen Nygaard son
considerados los padres del paradigma.
En los años 80 se vuelve popular debido a
su rendimiento y procesamiento de datos.
Esto sumado a la influencia de C++.
Introducción a la POO
5
7. Clase y Objeto
La gran base del paradigma orientado a
objetos radica en dos conceptos primordiales:
Clase: es “el plano” para construir algo. No es
“tangible”. Son las definiciones y propiedades
(atributos y métodos/funciones) de un tipo de
objeto.
Objeto: Es la instancia de una clase, una
entidad que posee definiciones y propiedades
que fueron definidas en la clase de la cual fue
instanciado.
Introducción a la POO
7
8. Clase y Objeto
Se entiende por instancia la creación de
un nuevo objeto a partir de una clase.
En un ejemplo práctico, podemos ver el
plano de una casa como una Clase y la
casa como un objeto. Del plano no
podemos hacer mucho, pero a partir de
éste podemos crear (instanciar) muchos
objetos de tipo casa.
Introducción a la POO
8
11. Un poco de Java...
Creado por James Gosling de Sun
Microsystems. Su aparición fue en el año
1995.
Es un lenguaje compilado, por lo que su
ejecución es más óptima que lenguajes
interpretados como PHP, Perl, Lisp, Ruby, etc.
Su sintaxis deriva de C y C++.
Inicialmente fue diseñado para POO, pero
actualmente soporta paradigmas funcionales
y POA.
Introducción a la POO
1
1
12. Algunos tipos de datos en
Java
Objetos:
Integer: Tipo de dato entero. Por defecto su
inicialización es null.
String: Representa a la cadena de caracteres, ahora
como objeto. Su inicialización por defecto también es
null.
Boolean: Objeto que soporta true y false.
Double: Ajusta un valor primitivo double en el objeto.
Date: Tipo de dato, como objeto, Date. Sirve para
almacenar tiempo. Parte de la biblioteca java.util.
Introducción a la POO
1
2
13. Hola mundo en Java...
La ejecución en Java depende del método
Main (que será explicado más adelante)
Utilizando un String sería:
Introducción a la POO
1
3
14. Ejemplo de Clase en Java
Según lo visto, podríamos construir una simple clase de la
siguiente forma:
Parte de las buenas prácticas de programación dice que las
clases deben comenzar SIEMPRE con mayúscula y deben ser
singular. Los atributos, métodos, funciones y objetos con
minúscula.
Es importante cuidar la semántica.
Introducción a la POO
1
4
16. Ejemplo de Instancia en Java
La instancia de la clase mostrada, para crear un nuevo
objeto, sería la siguiente:
Ejemplo de la creación de un nuevo objeto de tipo (clase)
persona en Java.
Persona = Es la clase.
persona = Es el objeto. Puede ser nombrado de cualquier
forma, pero por normativa debe tener coherencia.
new Persona() = El valor al objeto, una nueva instancia
de la clase Persona.
Introducción a la POO
1
6
17. Ejemplo de Instancia en Java
Se acceden a los atributos y/o métodos/funciones mediante un “.”
Introducción a la POO
1
7
18. Tipos de Clases
public: Es la más utilizada. Da acceso
público dentro del package a la clase
para que pueda ser heredada o
instanciada desde otras clases. Si no se
especifica el tipo, ésta es por defecto.
abstract: Esta clase no puede ser
instanciada, sólo puede ser usada por
herencia. Por lo general se usa de base
para otras clases.
Introducción a la POO
1
8
19. Tipos de Clases
final: Tampoco puede ser instanciada. Por
lo general contiene atributos, métodos
y/o funciones constantes (estáticas) que
necesitan ser utilizadas en nuestro
package, así no es necesario tener un
objeto de ese tipo en memoria.
Introducción a la POO
1
9
21. Funciones y Métodos
Las clases también pueden contener funciones y/o
métodos.
Métodos: ejecutan y/o implementan instrucciones
definidas en su contenido, accediendo y modificando (si
así se especifica) los atributos (variables) de la clase de
forma implícita. Se caracteriza por el “void”.
Introducción a la POO
2
1
22. Funciones y Métodos
Funciones: funcionan igual que los métodos, pero
con la diferencia que retornan algún dato/objeto.
En la función se indica (al menos en Java), qué tipo
de objeto u atributo debe retornar.
Es importante aclarar que para las buenas prácticas,
las funciones y métodos deben comenzar con
minúsculas, además de usar verbos para
nombrarles.
Introducción a la POO
2
2
23. Métodos y Funciones
Especiales
Método Main: Método estático estándar y
por defecto que indica el punto de partida
de nuestro programa, en este caso quien
ejecuta es la JVM.
Posee un control de acceso (público).
Todo lo que se quiera ejecutar deberá
estar en este método.
Introducción a la POO
2
3
24. Métodos y Funciones
Especiales
Constructor: Es un método especial que se
inicia de manera automática al momento de
inicializar/instanciar/crear un objeto.
Está contenido en la clase y puede tener
distintos tipos de acceso según sea el patrón
de diseño que implementemos.
Cuando no está visible, la clase por defecto
tiene un constructor público, vacío e invisible.
Se identifica porque es un método con el
nombre exacto de la clase.
Introducción a la POO
2
4
27. Controles de Acceso
Una de las tantas características que
incorpora la POO es el nivel de acceso
que se pueden tener a los atributos,
métodos y funciones de una clase, a
excepción del método Main que es
estándar. Todo esto se denomina
controles de acceso y son: public,
private, protected y friendly (por
defecto).
Introducción a la POO
2
7
28. Controles de Acceso
public: permite el acceso desde cualquier clase.
Se representa con (+) en el diagrama de clases.
private: permite el acceso sólo desde la clase a la
que pertenece. Se representa con (-) en el
diagrama de clases.
protected: permite el acceso sólo desde las
subclases y las que la heredan. Se representa
con (#) en el diagrama de clases.
friendly: es el permiso por defecto si no se
especifica. Se puede acceder desde cualquier
clase en el package.
Introducción a la POO
2
8
30. Bases de la POO
Los tres pilares fundamentales de la
programación orientada a objetos son:
Encapsulamiento.
Herencia.
Polimorfismo.
Introducción a la POO
3
0
31. Getters y Setters
Una de tantas malas prácticas recurrentes es el
tema de los permisos en los atributos de las clases.
En general, por un tema de seguridad, los atributos
de las clases deben ser privadas.
Para acceder a los atributos aparecen los “getters”
y “setters”.
Esto en general es conocido como
ENCAPSULAMIENTO, que no es más que el
ocultamiento del estado de los datos, y que sólo se
puedan acceder a ellos a través de métodos y
funciones determinadas.
Introducción a la POO
3
1
32. Getters y Setters:
Encapsulamiento
Getter: se identifica con el nombre de
“get”. Permite acceder al valor del atributo.
Por buena práctica, la conformación del
nombre de la función es
getNombreVariable.
Getter para acceder al atributo rut de la
clase.
Introducción a la POO
3
2
33. Getters y Setters:
Encapsulamiento
Setter: se identifica con el nombre de
“set”. Permite cambiar el valor del
atributo de la manera determinada en el
método.
Setter que permite dar valor a la variable
rut de la clase.
Introducción a la POO
3
3
34. Interacción de Clases
A veces necesitamos atributos de una
clase distinta.
Por ejemplo: la clase A representa una
tabla de nuestra base de datos. Esta
tabla a su vez tiene FK de otra tabla que
a su vez está representada por la clase
B... ¿para qué replicar código si podemos
usar otra clase de igual forma que “un
atributo”?
Introducción a la POO
3
4
36. Interacción de Clases
Otra forma de interacción es la
denominada herencia.
La herencia es la que permite crear
clases a partir de otras ya existentes
siempre cuidando su naturaleza. Facilita
compartir atributos, métodos y funciones
(dependiendo de los permisos de acceso)
a través del extends, lo que permite la
reutilización de código.
Introducción a la POO
3
6
38. Interacción de Clases:
Herencia
Dos definiciones clases en Herencias:
Superclase: es la clase base, padre, etc.
Por lo general es abstracta.
Subclase: es la clase hija o derivada. Esta
clase extienda a la superclase para tener
acceso a sus atributos, funciones y
métodos.
Introducción a la POO
3
8
39. Interacción de Clases:
Herencia
Visibilidad:
Componentes públicos de la superclase
son visibles y públicos en la subclase.
Componentes privados son visibles sólo
en la superclase.
Componentes protegidos (protected) son
visibles en la subclase.
Introducción a la POO
3
9
40. Polimorfismo
El polimorfismo aplica a las distintas
respuestas que podemos tener de un
mismo método y/o función dependiendo
de la naturaleza del objeto.
Va de la mano con la herencia y el
concepto de superclases y subclases.
Introducción a la POO
4
0
42. Polimorfismo
La subclase Cliente extiende de la superclase
Persona (hijo-padre).
Aprovechando la naturaleza de la clase, la
subclase utiliza un método ya existente en la
superclase y lo usa de manera diferente.
Introducción a la POO
4
2
43. Polimorfismo
La subclase Main también extiende de la
superclase Persona y utiliza la herencia
en el método main, también utiliza una
instancia de la clase Cliente.
Introducción a la POO
4
3
44. Polimorfismo
El resultado sería el siguiente:
Se utilizó herencia y polimorfismo para
sacar ventaja de la naturaleza de las
clases y cambiar el método (que fue
reutilizado, notación @Override) según el
caso (naturaleza).
Introducción a la POO
4
4
46. Buenas Prácticas
Nombre de métodos, objetos, funciones y atributos
comienzan con minúscula, las Clases con mayúscula.
No utilizar caracteres extraños ($, ñ, (´) tildes, etc.
Atributos de la clase deben ser privados para evitar
acceso de forma directa. Utilizar encapsulamiento.
Nombre de los atributos deben ser descriptivos.
Nombre de métodos y funciones deben expresar un
verbo para diferenciar de atributos.
Utilizar this para los atributos internos de la clase y
super para los atributos por herencia.
Utilizar siempre indentación.
Introducción a la POO
4
6