Programación Orientada a Objetos en Java (Introducción)

  • 0 Respuestas
  • 1712 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Solid Water

  • *
  • Underc0der
  • Mensajes: 145
  • Actividad:
    0%
  • Reputación 6
  • (:{
    • Ver Perfil
Bueno resulta que hace unos años escribí el mismo manual de introducción a la POO en distintos lenguajes. Los tengo en version C#, java, C++ y PHP..
Hoy traigo aquí el de java.


Programación Orientada a Objetos en Java (Introducción)


Cuando escribimos un programa en un lenguaje orientado a objetos, definimos clases, una clase describe las características y comportamientos de objetos similares.

Por ejemplo: la clase Automóvil lista las características comunes a todos los automóviles (atributos y comportamientos).

Atributos: Color, Nro de ruedas, potencia, cambios, etc
Comportamientos: Encender, Apagar, Marcha atrás, acelerar, etc
Así de forma abstracta listamos atributos y comportamientos que todos los autos pueden tener.

Luego los objetos son la forma concreta de esto mismo:

Tenemos el auto de Juan, con 4 puertas, 5 cambios, marca Mercedes Benz, color azul y el de Fernando con 2 puertas, 4 cambios, rojo, descapotable..

Resumiendo:

Una clase es una plantilla que describe a un conjunto de objetos con características y atributos similares.

Un objeto, o instancia de una clase, es la representación concreta y especifica de esta, que reside en la memoria (puede haber muchos objetos de una misma clase).

Ejemplo:

Automovil.java
Código: Java
  1. package programandoobjetos;
  2. //Por norma los nombres de las clases comienzan con mayúscula:
  3. public class Automovil {
  4.     //Atributos:
  5.     String Color, Marca, Patente;
  6.     int Cambios, Puertas;
  7.  
  8.     //Métodos:
  9.     void verDatos(){
  10.        System.out.println("Color: " + Color);
  11.        System.out.println("Marca: " + Marca);
  12.        System.out.println("Cambios: " + Cambios);
  13.        System.out.println("Puertas: " + Puertas);
  14.        if(Patente != null)
  15.        {
  16.            System.out.println("Patente: " + Patente);
  17.        }
  18.        System.out.println();
  19.     }
  20.     //Cuando un método de una clase se llama igual que la clase
  21.     //significa que es el constructor de la clase
  22.     //es decir la funcion a la que se llama al crear el objeto
  23.     //Y se determina sus parámetros
  24.     public Automovil(String color, String marca, int cambios,
  25.                      int puertas){
  26.         this.Color = color;
  27.         this.Marca = marca;
  28.         this.Cambios = cambios;
  29.         this.Puertas = puertas;
  30.     }
  31.    
  32.     //El polimorfismo o sobre carga de métodos
  33.     //Es que podamos tener funciones con el mismo nombre
  34.     //Y distitnos parámetros y acciones
  35.     //En este caso tendremos otro constructor
  36.     //que acepte como parámetro también la patente
  37.      public Automovil(String color, String marca, int cambios,
  38.                       int puertas, String patente){
  39.         this.Color = color;
  40.         this.Marca = marca;
  41.         this.Cambios = cambios;
  42.         this.Puertas = puertas;
  43.         this.Patente = patente;
  44.     }
  45. }



ProgramandoObjetos.java
Código: Java
  1. package programandoobjetos;
  2.  
  3.  
  4. public class ProgramandoObjetos {
  5.  
  6.     public static void main(String[] args) {
  7.    
  8.       //Creamos un objeto del tipo automovil
  9.       //Le pasamos parametros a su constructor
  10.       Automovil Auto = new Automovil("Azul","Mercedes Benz", 5, 4);
  11.       //En este caso también le pasamos la patente
  12.       //Y automáticamente usa el otro constructor
  13.       Automovil Auto2 = new Automovil("Rojo","Ferrari", 4, 2, "HYO345");
  14.      
  15.       Auto.verDatos();
  16.       Auto2.verDatos();
  17.    
  18.     }  
  19.  
  20. }
  21. /* Imprime:
  22.     Color: Azul
  23.     Marca: Mercedes Benz
  24.     Cambios: 5
  25.     Puertas: 4
  26.  
  27.     Color: Rojo
  28.     Marca: Ferrari
  29.     Cambios: 4
  30.     Puertas: 2
  31.     Patente: HYO345
  32.  
  33. */

Polimorfismo: Es la capacidad de un método para poder comportarse de diversas maneras y recibir distintos parámetros. Arriba puede verse un ejemplo.
También es conocido como polimorfismo el hecho de que un método que acepta un tipo de objeto como parámetro, acepte a su vez sin necesidad de ningún cambio a los objetos de sus clases hijas.


Herencia:La herencia es una relación entre las clases.
Todas las clases en Java existen dentro de una jerarquía. Cada clase tiene una (y solo una) clase por encima de ella (no como en C++ que puede haber herencia múltiple), denominada superclase, y cualquier número de clases (o ninguna) por debajo.
A estas últimas se las denomina subclases.
Una clase heredará los métodos y variables miembro de su superclase. Del mismo modo, sus subclases heredarán los métodos y variables de esa clase.


Ejemplo Herencia:

Persona.java
Código: Java
  1. package herencia;
  2.  
  3. public class Persona {
  4.     int  numeroDeDocumento;
  5.     String nombre, apellido, tipoDeDocumento;
  6.  
  7.    
  8.     void Persona(String nom, String ape)
  9.     {
  10.        this.nombre = nom;
  11.        this.apellido = ape;
  12.     }
  13.    
  14.     void setDocumento(String tipo, int numero){
  15.         this.tipoDeDocumento = tipo;
  16.         this.numeroDeDocumento = numero;
  17.     }
  18.    
  19.     void verDocumento(){
  20.        System.out.println("Tipo de documento: " + tipoDeDocumento
  21.        + "\nNumero de documento: " + numeroDeDocumento);
  22.     }
  23.    
  24.     void verNombre(){
  25.         System.out.println("nombre: " + nombre
  26.         + " \nApellido: " + apellido);
  27.     }
  28.    
  29. }
  30.  


Empleado.java
Código: Java
  1. package herencia;
  2.  
  3. //La clase pública Empleado hereda de Persona
  4. public class Empleado extends Persona {
  5.    
  6.     int Sueldo;
  7.     String Cargo;
  8.    
  9.     //El constructor mínimamente debe tener
  10.     //los parámetros del constructor de
  11.     //la clase Padre:
  12.     public Empleado(String nom, String ape,
  13.                     int sueldo, String cargo){
  14.        
  15.         this.Sueldo = sueldo;
  16.         this.Cargo = cargo;
  17.         //Nombre y apellido fueron algunos de los
  18.         //Atributos heredados:
  19.         this.nombre = nom;
  20.         this.apellido = ape;
  21.     }
  22.    
  23.     void VerSueldo(){
  24.         System.out.println("Sueldo: " + Sueldo);
  25.     }
  26.    
  27.    void verCargo(){
  28.        System.out.println("Cargo: " + Cargo);
  29.    }
  30.      
  31. }



Herencia.java
Código: Java
  1. package herencia;
  2.  
  3.  
  4. public class Herencia {
  5.  
  6.     public static void main(String[] args) {
  7.        //Creamos un objeto de la clase empleado
  8.        //Le pasamos los parametros a su constructor
  9.        Empleado NombreDelObjeto = new Empleado("Juan","Perez",
  10.                                   15000, "Software Developer");
  11.        //Como vemos, usamos las funciones de la clase padre
  12.        //Y sus atributos
  13.        NombreDelObjeto.setDocumento("DNI", 20202678);
  14.        
  15.        NombreDelObjeto.verNombre();
  16.        NombreDelObjeto.verDocumento();
  17.        NombreDelObjeto.verCargo();
  18.        NombreDelObjeto.VerSueldo();
  19.     }
  20.    
  21. }
  22. /*Print:
  23.  
  24.         nombre: Juan    
  25.         Apellido: Perez
  26.         Tipo de documento: DNI
  27.         Numero de documento: 20202678
  28.         Cargo: Software Developer
  29.         Sueldo: 15000
  30.  
  31. */

Encapsulación: La encapsulación es una técnica para empaquetar la información, envolviendo los atributos y métodos de los objetos en clases, de tal forma que se oculte lo que debe ocultarse y haga visible lo que está pensado para serlo. Tanto los métodos como los atributos pueden ser encapsulados. Para ello se utilizan las palabras: public; protected y private.




    MODIFICADOR        CLASE        PACKAGE        SUBCLASE        TODOS   
    Public        Si        Si        Si        Si   
    Protected        Si        Si        Si        No   
    No especificado        Si        Si        No        No   
    Private        Si        No        No        No   


Ejemplo:


Persona.java
Código: Java
  1. package encapsulacion;
  2.  
  3.  
  4. public class Persona {
  5.     private int numDoc;
  6.     public String ColorDePiel;
  7.     protected String nombre;
  8.    
  9.     Persona(int doc, String color, String nomb){
  10.             this.numDoc = doc;
  11.             this.ColorDePiel = color;
  12.             this.nombre = nomb;
  13.     }
  14.     //Como numDoc no puede accederse desde otro lado
  15.     //Más que su propia clase, ya que es private
  16.     //Hacemos una función que lo muestre
  17.     void VerDoc()
  18.     {
  19.         System.out.println("Documento: " + this.numDoc);
  20.     }
  21. }


Encapsulacion.java
Código: Java
  1. package encapsulacion;
  2.  
  3.  
  4. public class Encapsulacion {
  5.  
  6.    
  7.     public static void main(String[] args) {
  8.        Persona Jorge = new Persona(32145672,"Blanco", "Jorge");
  9.        //Podemos acceder a sus atributos públicos
  10.        //y protected (ya que estamos en el mismo package)
  11.        //pero no a los private (Solo pueden accederse
  12.        //Desde su misma clase)
  13.        System.out.println("Color: " + Jorge.ColorDePiel);
  14.        System.out.println("Nombre: " + Jorge.nombre);
  15.        Jorge.VerDoc();
  16.     }
  17.    
  18. }




Concepto de interface:

En java una interface es una clase abstracta pura, es decir una clase donde todos los métodos son abstractos(no se implementa ninguno). Una interface puede también contener datos miembro, pero estos son siempre static y final. Una interface sirve para establecer un “protocolo” entre clases.

Para crear una interface, se utiliza la palabra clave interface en lugar de Class. La interface puede defirnirse public o sin modificador de acceso, y tiene el mismo significado que para las clases. Todos los métodos que declara una interface son siempre public.

Para indicar que una clase implementa todos los métodos de una interface se utiliza la palabra clave implements. El compilador verificara que la clase efectivamente declare e implemente todos los métodos de la interface. Una clase puede implementar más de una interface.

Ejemplo:
Código: Java
  1. interface InstrumentoMusical{
  2.    
  3.     void tocar();
  4.     void Afinar();
  5.        
  6. }
  7.  
  8. class Flauta implements InstrumentoMusical {
  9.  
  10.     @Override
  11.     public void tocar() {
  12.        //Acá la implementación
  13.     }
  14.  
  15.     @Override
  16.     public void Afinar() {
  17.         //Acá la implementación
  18.     }
  19.    
  20. }
Las interfaces pueden extender otras interfaces y, a diferencia de las clases, una interface puede extender más de una interface:
Código: Java
  1. Interface SubInterface extends PadreUno, PadreDos
  2. {    
  3.  
  4. }
   
Dado que todos los datos miembros de una interface son por definición static y final resultan una buena herramienta para declarar constantes.

Saludos,


« Última modificación: Julio 02, 2019, 02:07:29 pm por Solid Water »



 

[Video Curso] Iniciacion a Java por DesarrolloWeb y EscuelaIT Mayo 2014

Iniciado por graphixx

Respuestas: 3
Vistas: 3930
Último mensaje Febrero 23, 2015, 10:13:28 am
por Hu3c0
Java Extremo [Video Cursos Completos] [Español] [ISO] 2009

Iniciado por graphixx

Respuestas: 9
Vistas: 9832
Último mensaje Diciembre 04, 2017, 02:36:34 am
por graphixx
Como compilar programas Java en la consola de comandos de Windows

Iniciado por tar3kw0rm3d

Respuestas: 2
Vistas: 4244
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
Cheat-Sheet: JAVA - Hoja Guía para que no se me olvide

Iniciado por Denisse

Respuestas: 1
Vistas: 657
Último mensaje Julio 21, 2020, 12:43:49 pm
por DevCode
Curso JavaScript Avanzado [Paradigmas de programación]

Iniciado por Mr.Kratos

Respuestas: 0
Vistas: 3514
Último mensaje Julio 30, 2018, 04:56:37 pm
por Mr.Kratos