Está en la página 1de 7

Investigar conceptos básicos y características fundamentales

de la Programación orientada Objetos


Definición Clase
Una clase es una plantilla. Define de manera genérica cómo van a ser los objetos de
determinado tipo. Por ejemplo, en un juego, una clase para representar a personas
puede llamarse Persona y tener una serie de atributos como Nombre, Apellidos o
Edad (que normalmente son propiedades), y una serie de comportamientos que
pueden tener, como Hablar(), Caminar() o Comer() y que se implementan como
métodos de la clase (funciones).

Ejemplo Diagrama de Clase


La representación gráfica de una o varias clases se hará mediante los denominados
Diagramas de Clase. Para los diagramas de clase se utilizará la notación que
provee el Lenguaje de Modelación Unificado.
Definición de atributos
Son los datos o variables que caracterizan al objeto y cuyos valores en un momento
dado indican su estado. Un atributo es una característica de un objeto.
Mediante los atributos se define información oculta dentro de un objeto, la cual es
manipulada solamente por los métodos definidos sobre dicho objeto.
Un atributo consta de un nombre y un valor. Cada atributo está asociado a un tipo
de dato, que puede
ser simple (entero, real, lógico, carácter, string) o estructurado (arreglo, registro,
archivo, lista, etc.)

Definición de Constructor
Cada objeto o instancia de una clase debe ser creada explícitamente a través de un
método u operación especial denominado Constructor.
En el constructor se asignan los valores iniciales del nuevo objeto.
Un método constructor de una clase es un método especial que:
 tiene el mismo nombre que la clase y
 no tiene tipo de retorno.
 inicializa el estado de un objeto.

Definición de Destructor
Un destructor en programación orientada a objetos es una función miembro especial
llamadas automáticamente en la ejecución del programa, y por tanto no tienen por
qué ser llamadas explícitamente por el programador.
En contraposición al constructor, el destructor elimina el vínculo y libera el espacio
de memoria de un objeto, para que pueda ser ocupado nuevamente.

Definición de Métodos o acciones


Son las operaciones (acciones o funciones) que se aplican sobre los objetos y que
permiten crearlos, cambiar su estado o consultar el valor de sus atributos. Los
métodos constituyen la secuencia de acciones que implementan las operaciones
sobre los objetos. La implementación de los métodos no es visible fuera de objeto.
La sintaxis algorítmica de los métodos expresados como funciones y acciones es:
Definición de herencia
La herencia en java representa lo que conocemos de herencia en el mundo real,
básicamente mediante esta obtenemos las características o rasgos comunes de
nuestros padres o abuelos, en java es el mismo enfoque permitiendo la creación de
nuevas clases basadas en clases ya existentes, con las cuales podemos obtener las
características de las clases padres, heredando campos, atributos, métodos o
funcionalidades.

Tipos de herencia
La herencia se clasifica en dos tipos: la herencia simple y la herencia múltiple. Esta
clasificación se basa en la cantidad de clases de las cuales se hereda una clase.

En la herencia simple, una clase hereda únicamente de una clase. No debemos


confundirnos con este concepto y pensar que hablamos de niveles de herencia.
Aunque en mi sistema existan varios niveles de herencia, al establecer una herencia
simple cada una de las clases hereda solo de una clase.

Con la herencia múltiple una entidad deriva de dos o más clases, sin importar los
niveles de herencia.

Ejemplos de los tipos de herencia


Ejemplo: La clase Docente y la clase Estudiante heredan las propiedades de la
clase Persona (superclase, herencia simple).
Ejemplo: La clase Preparador (subclase) hereda propiedades de la clase Docente y
de la clase Estudiante (herencia múltiple).

Definición de Abstracción
Como la propia palabra indica, el principio de abstracción lo que implica es que la
clase debe representar las características de la entidad hacia el mundo exterior,
pero ocultando la complejidad que llevan aparejada. O sea, nos abstrae de la
complejidad que haya dentro dándonos una serie de atributos y comportamientos
(propiedades y funciones) que podemos usar sin preocuparnos de qué pasa por
dentro cuando lo hagamos.

Así, una clase (y por lo tanto todos los objetos que se crean a partir de ella) debe
exponer para su uso solo lo que sea necesario. Cómo se haga "por dentro" es
irrelevante para los programas que hagan uso de los objetos de esa clase.

En nuestro ejemplo de las personas en un juego, puede ser que tengamos un dato
interno que llamamos energía y que nunca es accesible directamente desde fuera.
Sin embargo, cada vez que la persona anda (o corre, si tuviésemos un método para
ello) gasta energía y el valor de este dato disminuye. Y cuando la persona come, el
valor sube en función de lo que haya comido.
Definición de Polimorfismo
En POO, el concepto de polimorfismo se refiere al hecho de que varios objetos de
diferentes clases, pero con una base común, se pueden usar de manera indistinta,
sin tener que saber de qué clase exacta son para poder hacerlo.

Supongamos que en nuestro juego tenemos un montón de personajes que están


juntos en un mismo escenario. Hay varios piratas, algunos estrategas y un montón
de otros tipos de personas. En un momento dado necesitamos que todos se pongan
a hablar. Cada uno lo hace de una forma diferente, ya que son tipos de personajes
distintos. Sería algo bastante tedioso tener que localizar primero a los de un tipo y
hacerlos hablar, lo luego a los de otro y así sucesivamente. La idea es que puedas
tratarlos a todos como personas, independientemente del tipo específico de persona
que sean y simplemente decirles que hablen.

Al derivar todos de la clase Persona todos pueden hablar, y al llamar al método


Hablar() de cada uno de ellos se utilizará el proceso adecuado según el tipo (los
piratas meterán sus expresiones adicionales que hemos visto, los pilotos dirán
"Entrando en pista" o lo que sea, y los estrategas añadirán a todo "Déjame que lo
piense bien"). Todo esto de manera transparente para el programador. Esto es el
polimorfismo.

De hecho, el polimorfismo puede ser más complicado que eso ya que se puede dar
también mediante la sobrecarga de métodos y, sobre todo, a través del uso de
interfaces, pero el concepto es el que acabo de explicar.

El polimorfismo nos permite utilizar a los objetos de manera genérica, aunque


internamente se comporten según su variedad específica.

Definición de Encapsulamiento
La encapsulación es la característica de un lenguaje POO que permite que todo lo
referente a un objeto quede aislado dentro de éste. Es decir, que todos los datos
referentes a un objeto queden "encerrados" dentro de éste y sólo se puede acceder
a ellos a través de los miembros que la clase proporcione (propiedades y métodos).
Por ejemplo, en el caso de las personas que estábamos viendo, toda la información
sobre éstas (nombre, apellidos, edad... y cualquier otro dato interno que se utilice y
que no necesariamente se ve desde el exterior del objeto) está circunscrito al ámbito
de dicha persona.

Tipos de encapsulamiento
Existen tres niveles de acceso para el encapsulamiento, los cuales son:
Público (Public): Todos pueden acceder a los datos o métodos de una clase que se
definen con este nivel, este es el nivel más bajo, esto es lo que tu quieres que la
parte externa vea.
Protegido (Protected): Podemos decir que estás no son de acceso público,
solamente son accesibles dentro de su clase y por subclases.
Privado (Private): En este nivel se puede declarar miembros accesibles sólo para la
propia clase.

También podría gustarte