Programación Orientada a Objetos


  

Los pilares de la programación

La Programación Orientada a objetos se basa en 4 conceptos fundamentales.

Abstracción:

Es la propiedad que permite seleccionar las características esenciales y relevantes de un objeto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. 
La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar. 

Es la ocultación de detalles irrelevantes o que no se desean mostrar. Podemos distinguir en una clase dos aspectos desde el punto de vista de la abstracción:

  • interfaz: lo que se puede ver/usar externamente de un objeto.
  • Implementación: cómo lleva a cabo su cometido.
Nos interesa saber qué nos ofrece un objeto, pero no cómo lo lleva a cabo.

Herencia:
La herencia es una de las características fundamentales de la poo por la que, tomando como base una clase ya existente, es posible derivar una nueva, que heredará todos sus miembros, teniendo posibilidad de sobrecargarlos, crear unos nuevos o utilizarlos.

Cuando una clase hereda de otra, la clase derivada incorpora todos los miembros de la clase base además de los suyos propios.
Ejemplo: 



Resultado de imagen para herencia poo



Polimorfismo:

El polimorfismo es una relajación del sistema de tipos, de tal manera que una referencia a una clase (atributo, parámetro o declaración local o elemento de un vector) acepta direcciones de objetos de dicha clase y de sus clases derivadas (hijas...).

La herencia y el polimorfismo son dos conceptos estrechamente ligados. ejemplo:
Tenemos una clase Vehiculo y de ella dependen varias clases hijas como coche, moto, autobús,etc.





Encapsulamiento:
Consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Ea tener todo esto en una sola entidad.

Ejemplo:
   De un televisor, el usuario conoce su apariencia y parte del funcionamiento. Sólo importa que funcionen el sector de canales, el video y el audio; no le interesa saber cómo funciona cada una de las partes internas del aparato, ese detalle sólo le interesan al fabricante y al técnico de servicio.


Clase

Es la especificación de las características de un conjunto de objetos.
   Una clase es una definición de operaciones que se define una vez en algún punto del programa, pero normalmente se define en un archivo cabecera, asignándole un nombre que se podrá utilizar mas tarde para definir objetos de dicha clase. Las clases se crean usando la palabra clave class y su sintaxis la siguiente:
class Persona{
private// declaración de variables(datos)
....
public: //Declaración de métodos de la clase y Prototipos
...
};

No olvidar el punto y coma al final, Un objeto es una instancia de una clase.


Componentes de Una Clase:

Atributos:
Una clase es una plantilla de la cual se puede crear objetos, una clase debe implementar sus características que se les conoce como propiedades o atributos, imaginemos que estamos diseñando una clase que va permitir crear objetos de tipo vehículos, no todos los vehículos van a tener las mismas características.

Puesto que los atributos de una clase guardan datos deber definir el tipo de dato que van almacenar, por ejemplo, int, boolean, long, byte, char, etc. o algún tipo de dato definido por el programador que puede ser un objetivo.

La implementación:
class Vehiculo{
   String color;
   float motor;
}

Métodos:
Una clase también implementa un comportamiento, siguiendo el ejemplo de la clase vihículo este puede tener varios comportamientos como por ejemplo:
arrancar, frenar, parar etc., el comportamiento de una clase se define con la creación de métodos, el cual debe contener 
tipo de retorno
nombre del método
apertura y cierre de paréntesis.

La implementación:
class Vehiculo{
   String color;
   float motor;

   public void arrancar(){ 
   
}
   public int frenar(){
   return 1;
}
   public void frenar (int param1, string          param2)
}
}


Parámetro y Argumento:

Los parámetros es el medio a partir del cual podemos expandir el ámbito de variables locales de funciones y además quienes nos permiten establecer comunicaciones entre funciones.

Estos términos son a menudo intercambiados incorrectamente en su uso. el contexto ayuda a diferenciar su significado. El término Parámetro: se usa a menudo para referirse a la variable en la declaración del método, mientras que Argumento: se refiere al valor que se envía. 

Para evitar confusiones, es común ver a un parámetro como una variable y un argumento como un valor.



ejemplo:
int func(void){...} // Sin parámetros
int func(){...}     // idem.
int func(T1 t1, T2 t2, T3 t3=1){...}// tres parámetros simples, uno con argumento por defecto.
int func (T1* ptr1, T2& tref) {...} //los argumentos son un puntero y una referencia
int func(register int i){...} // Petición de uso de registro para argumento (entero)
int func(char* str,...){...} // una cadena y cierto número de otros argumentos de tipos de variables */

Los argumentos son siempre objetos. Sus tipos pueden ser: escalares, uniones, o enumeraciones; clases definidas por el usuario; punteros a funciones, a clases o a matrices. El tipo void está permitido como único parámetro formar. Significa que la función no recibe ningún argumento.

Métodos con retorno 

Un método vuelve al código del que se llamó en el momento en el que alguna de estas circunstancias se de:

  1. Se completan todas las sentencias del método
  2. llega a una sentencia retorno
  3. lanza una excepción
El tipo de retorno de un método se especifica en la declaración del método. Dentro del cuerpo del método, se utiliza la sentencia return para devolver el valor.

 public int sumar() {
       suma = valorUno + valorDos + valorTres + valorCuatro + valorCinco;
       return suma;
   }

 Sin retorno:

Son métodos que realizan ciertas operaciones sin devolver un valor u objeto concreto. Un método es tipo procedimiento si comienza con la palabra clave void ("vacío", "nulo"). En estos casos podemos decir que el tipo de retorno es void. 

public void validar() {
        if (num1 > num2 & num1 > num3) {
            System.out.println("El primer numero ingresado es Mayor");
        } else {
            if (num2 > num1 && num2 > num3) {
                System.out.println("El segundo numero ingresado es Mayor");
            } else {
                System.out.println("El tercer numero Ingresado es Mayor");
            }
           
        }
         if (num1 < num2 & num1 < num3) {
            System.out.println("El primer numero ingresado es Menor");
        } else {
            if (num2 < num1 && num2 < num3) {
                System.out.println("El segundo numero ingresado es Menor");
            } else {
                System.out.println("El tercer numero Ingresado es Menor");
            }
           
        }
    }


Métodos de Acceso 

Los getters & setters son métodos de acceso lo que indica que son siempre declarados públicos, y nos sirven para dos cosas:

getter

Significa obtener, pues nos sirve para obtener(recuperar o acceder) el valor ya asignado a un atributo y utilizarlo para cierto método.
Es un método para realizar lecturas o entradas de datos desde un objetivo.
Ejemplo:
public class Multipo7 {
    private double numero;
    private double mult;
    
    public void multipo(){
       
        if(numero%7==0){
            System.out.println("El numero ingresado es multiplo de 7");
        }else{
            System.out.println("El numero no es multiplo de 7");
        }
    }

    public double getNumero() {
        return numero;

    }

setter















No hay comentarios.:

Publicar un comentario