Nociones generales de la Programación Orientada a Objetos (POO)

Clase
Una clase se podría definir como las instrucciones necesarias para instanciar un objeto. En esta se definen los atributos, métodos y propiedades que va a tener el objeto, también se define si el objeto instanciado va a heredar la estructura de otro o no, esto se conoce como herencia.

Clase abstracta:
Una clase abstracta es aquella que tiene métodos abstractos y son los que permiten definir las características comunes que deben llevar las clases que hereden de esta.
Un método abstracto no lleva código, solo va su declaración, después cada clase es responsable de declarar los procedimientos necesarios para dicho objeto.

Objeto
Un objeto es una instanciación de una clase, un objeto se podría definir como una caja negra la cual, recibe parámetros mediante propiedades (del tipo set y get) o atributos, recibe ordenes mediante métodos que pueden o no devolver información y en algunos lenguajes de programación, los objetos tienen lo que se denominan eventos, que no es nada mas ni nada menos que un evento que se dispara de forma autónoma cuando se produce alguna acción en particular o se cumplieron ciertos objetivos preestablecidos.

Metodo
Un método es, como dijimos anteriormente, una forma de pasarle ordenes a un objeto. Los hay de varios tipos, pero podemos clasificarlos en dos grandes grupos: los que devuelven información y los que no.
Al igual que los demás componentes de una clase, los métodos, se pueden definir como privados, protegidos o públicos.
Como método privado entendemos que es un método que solo actúa dentro de la clase, es decir, que para el mundo exterior no existe pero esta ahí y únicamente puede ser accedido por otros métodos de la clase (ya sean privados o no).
Un método protegido es un método privado pero que puede ser accedido por otras clases que hereden las características de dicho objeto.
Y finalmente tenemos los métodos públicos, que son aquellos que pueden ser accedidos directamente desde donde este instanciado el objeto.
Sabemos que un método recibe parámetros, en muchos lenguajes de programación podemos realizar lo que se denomina sobrecarga de métodos, y consiste en declarar un método con diferentes parámetros o un mismo método con diferentes salidas (tipos de dato).

Propiedades
Las propiedades son métodos que actúan directamente sobre los atributos (variables) de un objeto. Lo ideal es evitar que los atributos sean accedidos directamente desde fuera del objeto, para eso eso existen las propiedades y las mismas pueden ser únicamente declaradas para leer o escribir (o ambas) un atributo determinado y realizando, si fuese necesario, conversiones entre diferentes tipos de datos.

Constructor
Un constructor es un método que se ejecuta a la hora de instanciar un objeto, se utiliza básicamente para configurar el objeto. Dicho constructor no devuelve ningún tipo de información y puede haber mas de uno en una clase. Esto ultimo se denomina polimorfismo. Esto nos brinda la posibilidad de instanciar un objeto utilizando diferentes parámetros. Hay que definir tantos constructores como diferentes combinaciones deseemos.

Ejemplo
Vamos a ver un ejemplo utilizando java, que es un lenguaje 100% orientado a objetos, de una clase tipica:

class Alien{
private int numeroDeOjos;
private int agresividad;
private String nombre;

Alien(int ojos, int agresividad){
this.numeroDeOjos = ojos;
this.agresividad = agresividad;
this.nombre = R2D2;
System.out.println(El objeto alien a sido creado);
}

//Aca sobrecargamos el constructor:
Alien(int ojos, int agresividad, String nombre){
this.numeroDeOjos = ojos;
this.agresividad = agresividad;
this.nombre = nombre;
System.out.println(El objeto alien a sido creado);
}

public void atacar(int fuerza, Alien objetivo){
for(int i = 0; i < fuerza; i++){
this.golpear(objetivo);
this.morder(objetivo);
this.insultar(objetivo);
}
}

private void golpear(Alien objetivo){
//el codigo de este metodo esta protegido por leyes internacionales, asi que se van a quedar con las ganas de ver como el alien golpea.
}

private void morder(Alien objetivo){
//el codigo de este metodo esta protegido por leyes internacionales, asi que se van a quedar con las ganas de ver como el alien muerde.
}

private void insultar(Alien objetivo){
//el código de este método esta protegido por leyes internacionales, asi que se van a quedar con las ganas de ver como el alien insulta.
}

//Podríamos estar todo el día declarando métodos, pero no es el objetivo de este tutorial el enseñarles como crear un alien y darle vida ^^.
}

Ahora, una vez que tenemos definida una clase tenemos que instanciar el objeto o los objetos que necesitemos para nuestra aplicación, nuevamente vamos a utilizar java para ello.

Alien alien1 = new Alien(2, 50);
Alien alien2 = new Alien(4, 100, Chewbacca);

y así sucesivamente, para interactuar con nuestros objetos tenemos que utilizar los métodos de la siguiente manera:

alien1.atacar(50, alien2); //R2 es bueno, no hace mucho daño
alien2.atacar(100, alien1); //Chewy es mas grande y con este ataque debería dejarlo fuera de combate.

Ejemplo de clase abstracta:
Utilizando nuevamente java vamos a dar un pequeño ejemplo de lo que seria una clase abstracta y sus derivados:

public abstract class Sandwich{
String nombre;
abstract String[] listaIngredientes();
}

Ahora creamos dos clases que hereden estas caracteristicas basicas

class SandwichDeJamonYQueso extends Sandwich{
SandwichJamonYQueso(){
this.nombre = Sandwich de Jamon y Queso;
}

String[] listaIngredientes(){
String listado[] = {jamon, queso, mayonesa};
}
}

class SandwichDeAtunYTomate extends Sandwich{
SandwichJamonYQueso(){
this.nombre = Sandwich de Atun y Tomate;
}

String[] listaIngredientes(){
String listado[] = {atun, tomate, mayonesa};
}
}

Tags: #linux #Programming

author
Author: 
    Listar los archivos de un directorio usando PHP
    Les dejamos un pequeño script el cual

    Leave a reply "Nociones generales de la Programación Orientada a Objetos (POO)"

    Must read×

    Top