Está en la página 1de 13

Programación Orientada a Objetos

● Se basa en la construcción de programas basándose en la abstracción del mundo real.


● Todos los elementos que entran en juego en un programa se convertirá en un objeto.
● Estos objetos son una representación directa de un objeto o ente de la vida real como por ejemplo un
libro, una persona, un coche, un semáforo…
● La POO es un paradigma surgido en los años 1980, que utiliza objetos como elementos fundamentales
Un objeto es una abstracción de algún hecho o ente del mundo real, con atributos que representan sus
características o propiedades, y métodos que emulan su comportamiento o actividad. Todas las
propiedades y métodos comunes a los objetos se encapsulan o agrupan en clases. Una clase es una
plantilla, un prototipo para crear objetos; en general, se dice que cada objeto es una instancia de una
clase..
Algunos lenguajes imperativos que soportan orientación a objetos y otros enfoques:
• Java: Imperativo, orientado a objetos, reflexivo y genérico.
• Python y Ruby: Imperativo, orientado a objetos, reflexivo y funcional.
• C++: Imperativo, orientado a objetos, funcional y genérico.
• C#: Imperativo, orientado a objetos, funcional (lambda), reflexivo y genérico
• PHP5: Imperativo, orientado a objetos, reflexivo y genérico

 Podemos entender la programación Orientada a objetos (POO) como una forma especial de programar,
más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación, que
permite diseñar mejor las aplicaciones, llegando a mayores cotas de complejidad, sin que el código se
vuelva inmanejable.
 Al programar orientado a objetos tenemos que aprender a pensar cómo resolver los problemas de una
manera distinta a como se realizaba anteriormente, en la programación estructurada. Ahora tendremos
que escribir nuestros programas en términos de clases, objetos, propiedades, métodos y otras cosas que
veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con
los conceptos de este tipo de programación
Como hemos comentado, un objeto es un conjunto de datos (atributos) y acciones que puede
realizar o permiten interactuar con él (métodos→funciones y procedimientos).

Los programas son conjuntos de objetos que interactúan entre ellos a través de mensajes (llamadas
a métodos).

Las características de la programación orientada a objetos son:

● Abstracción
● Encapsulación
● Ocultación
● Modularidad
● Herencia
● Polimorfismo
Abstracción
La abstracción es un concepto que también existe en la programación modular, pero esa
abstracción se realiza a través de la modularidad. Se pueden utilizar funciones y
procedimientos solo conociendo la función que realizan.

Inconvenientes:
● Las funciones y procedimientos comparten datos del programa. Los cambios en los
datos afectan a todo el conjunto del programa.
● Durante el diseño es difícil saber con detalle qué funciones y procedimientos se
necesitarán.
● La reutilización del código es difícil y acaba siendo un copy&paste seguido de
retoques.

En POO la abstracción se realiza a nivel de los objetos.


● Mediante la abstracción se separan las propiedades importantes del
objeto de las que no lo son.

● Se definen las características esenciales de un objeto del mundo real.

● Propiedades y comportamientos que los definen como tal.

● En este punto solo hay que preocuparse de cómo definir a los


objetos.

● El soporte para la abstracción son las Clases


Ejemplo de Abstracción 1: 
En POO, podemos considerar una Persona como un objeto que tiene propiedades (como
nombre, altura, peso, color de pelo, color de ojos, etcétera) y métodos (como hablar, mirar,
andar, correr, parar, etcétera).
Gracias a la abstracción, otro objeto Tren puede manipular objetos Persona sin tener en cuenta
sus propiedades ni métodos ya que sólo le interesa, por ejemplo, calcular la cantidad de
personas que están viajando en él en ese momento, sin tener en cuenta ninguna otra
información relacionada con dichas personas, como altura, nombre, color de ojos, etcétera.

Ejemplo de Abstracción 2:
¿Qué características podemos abstraer de los automóviles? o ¿Qué características semejantes
tienen todos los automóviles?
Características: Marca, Modelo, Número de chasis, Peso llantas o cauchos, Puertas, Ventanas...
Comportamiento: Acelerar, Frenar, Retroceder...
Encapsulación
● Consiste en dejar claro qué elementos pertenecen a un objeto y cuáles no. Es la
propiedad que permite asegurar que la información de un objeto está oculta del
mundo exterior.

● El encapsulamiento consiste en agrupar en una Clase las características(atributos) con


un acceso privado y los comportamientos (métodos) con un acceso público.

● Acceder o modificar los miembros de una clase a través de sus métodos.

● El encapsulamiento nos ayuda a proteger la integridad de los datos y nos asegura que
los atributos de nuestra clase solo podran ser accedidos a traves de los metodos
definidos en dicha clase.
Ocultación
● Permite que cada objeto esté aislado del resto de objetos.

● El principio de ocultación hace referencia a que los atributos privados de un objeto no


pueden ser modificados ni obtenidos a no ser que se haga a través del paso de un mensaje
 (invocación a métodos, ya sean estos funciones o procedimientos).

● Para poder comunicarse entre ellos, los objetos han de ofrecer los mecanismos adecuados
(interface).

● Se definen las propiedades y los métodos como:


● Public
● Protected
● Private
Ejemplo de ocultación:

● class MetodosAcceso 
● {
● // esta propiedad es pública, accesible desde fuera
● public $variable1 = 1;

● // esta propiedad está protegida, solo es accesible dentro de la clase


● private $variable2 = 2;

● // esta propiedad es privada, accesible en la clase y sus subclases


● protected $variable3 = 3;
● }
● Desde fuera de la clase, solo podríamos acceder a la primera propiedad, la que está
declarada como public
Modularidad
● La modularidad indica que se pueden modificar las
características de cada una de las clases de manera
independiente.

● Cada clase tiene su implementación y su interface


para acceder a sus propiedades.

● Gracias a la modularidad si se modifica


internamente la clase el programa resultante
funcionará correctamente
Herencia
● Mediante la herencia, se pueden definir
nuevas clases a partir de una ya existente.

● Las nuevas clases (subclases) tendrán las


mismas propiedades y atributos que las
clases primarias (superclases).

● Las subclases resultantes podrán tener


además nuevas propiedades y atributos.
Polimorfismo
Gracias al polimorfismo, una clase puede
tener diferentes definiciones de un
mismo método (sobrecarga).

El propio sistema diferencia a qué versión


del método se llama dependiendo de la
definición del mismo.

La sobreescritura de métodos permite


reimplementar un método heredado

También podría gustarte