SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
Santiago, Chile 2013

Introducción a la Programación
Orientada a Objetos
Pablo Sepúlveda P.
Fundación GNUCHILE
pablo.sepulveda@member.fsf.org
Introducción a la POO
Contenidos:
Introducción al paradigma.
Clase y Objeto.
Conceptos.
Buenas prácticas.

Introducción a la POO

2
Introducción al Paradigma

Introducción a la POO

3
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
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
Clase y Objeto

Introducción a la POO

6
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
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
Clase y Objeto
Componentes de la Clase:

Introducción a la POO

9
Conceptos

Introducción a la POO

1
0
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
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
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
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
Ejemplo de Clase en Java

Introducción a la POO

1
5
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
Ejemplo de Instancia en Java

Se acceden a los atributos y/o métodos/funciones mediante un “.”

Introducción a la POO

1
7
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
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
Tipos de Clases

Introducción a la POO

2
0
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
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
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
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
Métodos y Funciones
Especiales
Ejemplo de Constructor:

Introducción a la POO

2
5
Funciones y Métodos
Ejemplo de funciones, métodos, Constructor y
método Main:

Introducción a la POO

2
6
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
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
Bases de la POO

Introducción a la POO

2
9
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
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
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
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
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
Interacción de Clases

Introducción a la POO

3
5
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
Interacción de Clases:
Herencia

Superclase “Herencia” y Subclase “Main”
Introducción a la POO

3
7
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
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
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
Polimorfismo
Superclase Persona (abstracta):

Clase abstracta persona tiene sus
componentes como protected.
Introducción a la POO

4
1
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
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
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
Buenas Prácticas

Introducción a la POO

4
5
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
Fuentes:
Documentación oficial Java SE 6
http://docs.oracle.com/javase/6/docs/
Wikipedia
http://es.wikipedia.org/

Introducción a la POO

4
7
¡Gracias por su atención!
Contacto:
psepulveda@fundaciongnuchile.cl
pablo.sepulveda@member.fsf.org
http://www.psep.cl/
http://www.gnuchile.cl/

http://creativecommons.org/licenses/by-sa/3.0/
4
8

Weitere ähnliche Inhalte

Was ist angesagt?

programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
ale8819
 
Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regulares
Kenia Adams
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
Mario Villaseñor
 

Was ist angesagt? (20)

Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POO
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la poo
 
Presentación poo
Presentación pooPresentación poo
Presentación poo
 
Herencia poo
Herencia pooHerencia poo
Herencia poo
 
Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regulares
 
POO Programación Orientada a Objetos
POO Programación Orientada a ObjetosPOO Programación Orientada a Objetos
POO Programación Orientada a Objetos
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional
 
Herencia
HerenciaHerencia
Herencia
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
 
Clase4 poo-uml
Clase4 poo-umlClase4 poo-uml
Clase4 poo-uml
 
P.O.O.
P.O.O.P.O.O.
P.O.O.
 
Variables y constantes
Variables  y constantesVariables  y constantes
Variables y constantes
 
Programacion Orientada a Objetos en python
Programacion Orientada a Objetos en pythonProgramacion Orientada a Objetos en python
Programacion Orientada a Objetos en python
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 

Ähnlich wie Intro Programación Orientada a Objetos

Sesion2 Php Oo Y Mysql
Sesion2 Php Oo Y MysqlSesion2 Php Oo Y Mysql
Sesion2 Php Oo Y Mysql
Hugo Flores
 
Python 3
Python 3Python 3
Python 3
CHREAR
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
vnslgars
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
Jonathan Macías
 
18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos
David Henrry Rosas Cruz
 
Programación orientada a objetos con c++
Programación orientada a objetos con c++Programación orientada a objetos con c++
Programación orientada a objetos con c++
Karime Hernández
 
Historia java ruben rodriguez
Historia java ruben rodriguezHistoria java ruben rodriguez
Historia java ruben rodriguez
coruniversitec
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clases
vay82
 

Ähnlich wie Intro Programación Orientada a Objetos (20)

Clase4_Python-CTIC
Clase4_Python-CTICClase4_Python-CTIC
Clase4_Python-CTIC
 
Curso Java Inicial 4 Poo En Java
Curso Java Inicial   4 Poo En JavaCurso Java Inicial   4 Poo En Java
Curso Java Inicial 4 Poo En Java
 
Php orientado a objetos, Ronald Nina
Php orientado a objetos, Ronald NinaPhp orientado a objetos, Ronald Nina
Php orientado a objetos, Ronald Nina
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
FPJUCE - Capitulo2
FPJUCE - Capitulo2FPJUCE - Capitulo2
FPJUCE - Capitulo2
 
Sesion2 Php Oo Y Mysql
Sesion2 Php Oo Y MysqlSesion2 Php Oo Y Mysql
Sesion2 Php Oo Y Mysql
 
Python 3
Python 3Python 3
Python 3
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf
 
18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos
 
Guia poo php
Guia poo phpGuia poo php
Guia poo php
 
Programación orientada a objetos con c++
Programación orientada a objetos con c++Programación orientada a objetos con c++
Programación orientada a objetos con c++
 
Historia java ruben
Historia java rubenHistoria java ruben
Historia java ruben
 
Historia java ruben rodriguez
Historia java ruben rodriguezHistoria java ruben rodriguez
Historia java ruben rodriguez
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clases
 
[ES] Programación orientada a objeto con java
[ES] Programación orientada a objeto con java[ES] Programación orientada a objeto con java
[ES] Programación orientada a objeto con java
 
Conceptos adicionales a la programación orientada a objetos con JavaScript
Conceptos adicionales a la programación orientada a objetos con JavaScriptConceptos adicionales a la programación orientada a objetos con JavaScript
Conceptos adicionales a la programación orientada a objetos con JavaScript
 
Conceptos poo
Conceptos pooConceptos poo
Conceptos poo
 

Kürzlich hochgeladen

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Kürzlich hochgeladen (15)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

Intro Programación Orientada a Objetos

  • 1. Santiago, Chile 2013 Introducción a la Programación Orientada a Objetos Pablo Sepúlveda P. Fundación GNUCHILE pablo.sepulveda@member.fsf.org
  • 2. Introducción a la POO Contenidos: Introducción al paradigma. Clase y Objeto. Conceptos. Buenas prácticas. Introducción a la POO 2
  • 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
  • 9. Clase y Objeto Componentes de la Clase: Introducción a la POO 9
  • 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
  • 15. Ejemplo de Clase en Java Introducción a la POO 1 5
  • 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
  • 25. Métodos y Funciones Especiales Ejemplo de Constructor: Introducción a la POO 2 5
  • 26. Funciones y Métodos Ejemplo de funciones, métodos, Constructor y método Main: Introducción a la POO 2 6
  • 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
  • 29. Bases de la POO Introducción a la POO 2 9
  • 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
  • 37. Interacción de Clases: Herencia Superclase “Herencia” y Subclase “Main” Introducción a la POO 3 7
  • 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
  • 41. Polimorfismo Superclase Persona (abstracta): Clase abstracta persona tiene sus componentes como protected. Introducción a la POO 4 1
  • 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
  • 47. Fuentes: Documentación oficial Java SE 6 http://docs.oracle.com/javase/6/docs/ Wikipedia http://es.wikipedia.org/ Introducción a la POO 4 7
  • 48. ¡Gracias por su atención! Contacto: psepulveda@fundaciongnuchile.cl pablo.sepulveda@member.fsf.org http://www.psep.cl/ http://www.gnuchile.cl/ http://creativecommons.org/licenses/by-sa/3.0/ 4 8