POO – Objetos, Clases y Herencia Simple


El siguiente artículo es una visión super-express de las funcionalidades de la orientación a objetos, cuyo único fin es estudiar/repasar para un control de Fundamentos de Ingeniera de Software. Si necesita información más seria, este no es lugar apropiado:)

La programación orientada a objetos (POO) ofrece elementos que facilitan el desarrollo de software en aspectos tales como modularización, reutilización de piezas de código (no copy/paste) y encapsulamiento (ocultar el estado de los objetos)

Objetos:

Se puede decir que un objeto es todo aquello que pueda ser identificable dentro de una especificación de requerimientos o problema y tenga las siguiente características:

  • Tenga estados definibles (abierto, cerrado).
  • Posea comportamientos asociados (puede correr, saltar, volar, etc). Éstos son denominados métodos.
  • Son capaces de interactuar/comunicarse con otros objetos por medio de sus métodos

Una característica propia de este paradigma, es la transparencia entre la implementación a nivel de código y la funcionalidad que provee un método (no me interesa cómo lo haga, sólo que lo haga).

Clases:

Las clases son plantillas que agrupan comportamiento (métodos) y estados (atributos) de los futuros objetos.

Los objetos son instancias de una clase. Usando el símil “variable – tipo” de la programación estructurada, se entiendo que un objeto es una variable que tiene el comportamiento y estados del tipo (objeto)

Veamos la creación de la clase Persona


public class Persona {
      public String nombre;
      public int edad;

      public void correr(){
              /* por implementar */
      }

}

y dentro del cuerpo del programa instanciamos una nueva Persona denominada Esteban:

public class Main {

	public static void main(String[] args) {

		Persona esteban = new Persona();

                // Ahora que esteban es persona, puede correr
                esteban.corre();

	}
}

Herencia

Ok, hasta el momento no se ha visto nada más interesante que una forma más cómoda de escribir Estructura de datos, pero ¿qué pasa si por ejemplo, necesitamos extender el comportamiento de un objeto que posee las mismas características de comportamiento y estado que la Clase Persona y además tiene otras características propias?. Como ya se dijo la reutilización de código es fundamental en este paradigma y en casos como estos se expresa como Herencia, cuya estructura jerárquica nos permite extender clases heredando todo (comportamientos y estados) desde una clase padre o Super Clase. las clases que hereden de una Super Clase se denominan Clases Hijas o Sub Clases.

Ejemplo: Imaginemos que una Persona ha sido expuesta a una extraña radiación y ahora tiene super poderes, por lo que no deja de ser persona, pero  ahora tiene nuevos comportamientos y estados, por lo que diremos que la nueva clase SuperHeroe hereda de la clase Persona:

Veamos el siguiente código en Java

public class SuperHeroe extends Persona{

	//Atributos:
	public String nombreDeFiccion;

	//Metodos:
	public void correrMuyRapido(){
		//TODO: implementar
	}

	public void volar(){
		//TODO: implementar
	}

}

Nota: La palabra clave extends nos indica que SuperHeroe está heredando o extendiendo a la super clase Persona.

Ahora veamos como se comporta esta nueva clase dentro del cuerpo del programa principal:

public class Main {

	public static void main(String[] args) {

		// Instanciar al nuevo SuperHeroe:
		SuperHeroe superPersona = new SuperHeroe();

		//Estas son propiedades de Persona:
		superPersona.nombre = "Carlos Kent";
		superPersona.edad = 37;

		//Esta es propiedad de SuperHeroe:
		superPersona.nombreDeFiccion = "Super Carlos";

		//Estos son metodos de SuperHeroe:
		superPersona.volar();
		superPersona.correrMuyRapido();

	}

}

Con esto termino esta primera entrega, en la siguiente escribiré acerca de clases abstractas, interfaces y herencia múltiple.

¡Saludos!

Anuncios

19 respuestas a “POO – Objetos, Clases y Herencia Simple

  1. Celeste agosto 25, 2008 / 8:14 pm

    aa esta muy bien explicado…me quedo bastante claro…bueno eso de los superpoderes jaja se pasaron XD. esk ando llevando esa materia en la scuela y kon esto ya es mas entendible…gracias

    saludos

    • hoskar marzo 3, 2017 / 3:39 pm

      Haprenda ah Hescrivir :v

    • HERMENEGILDO febrero 28, 2018 / 1:43 am

      X2 Haprenda ah Hescrivir :v

    • Florensiah mayo 27, 2018 / 5:15 pm

      x3 Haprenda ah Hescrivir :v

      • Benjamin junio 13, 2018 / 9:33 pm

        x4 Haprenda ah Hescrivir :v

  2. Minrock febrero 10, 2009 / 8:25 pm

    oiie buena explicacion (10.0)… te felicito esta muy facil tu explicacion… creeme me han intentado explikar esto pero nada q la pillaba hasta hace poco q ya comence a entender java, pero con esto entiendo mucho mejor la POO… gracias…
    Minrock

  3. walter pacheco marzo 3, 2010 / 1:22 am

    muy buena explicacion, gracias por compartir con nosotros sus datos.

  4. Patty marzo 11, 2010 / 4:55 pm

    Saludos..
    Tus ejemplos y forma de explicar va muy bien para los chavos que empiezan a trabajar con la POO…
    Te tengo solo una pregunta,¿ crees que C++ sea indicado para comenzar a estudiar POO o desde Java?

    • esteban.martini marzo 11, 2010 / 5:30 pm

      C++ requiere un poco más de paciencia para entender principalmente la sintaxis y semántica relativa al manejo de punteros y las asignaciones de espacio de memoria a la que conllevan.

      Si quieres aprender OO te recomiendo Java, existe mas documentación en internet y la sintaxis es mas sencilla. Hay otros aspectos, principalmente de rendimiento, que te pueden hacer preferir C++, si lo que quieres aprender es OO anda por Java o C#

  5. naVarrEtE jOrGeS marzo 10, 2011 / 1:27 am

    oe men grx si e entendido tu expliccioon graxx

  6. rrwiou43 agosto 29, 2011 / 5:30 pm

    correccion en la parte de clase falta una r en corre quedaria esteban.correr

  7. german diciembre 2, 2011 / 11:55 am

    Muy buen concepto””””””””””

  8. julio febrero 23, 2015 / 12:03 pm

    efectivo

    • Juanita Huevos Con Capsup septiembre 28, 2017 / 1:28 pm

      no, tarjeta de crédito :v

  9. Romero enero 26, 2017 / 11:21 pm

    Muy bien explicado amigo, felicidades, lo haces de una manera práctica y sencilla, ojalá todos tuvieran esa capacidad.

  10. Maguss hack abril 9, 2018 / 10:55 am

    This site certainly has all the info I needed about this subject and didn’t
    know who to ask.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s