Tema #1: Introducción a la programación orientada a objetos: - sebas-mora28/Algoritmos_Estructuras_Datos_I GitHub Wiki


Tema: Introducción a la programación orientada a objetos.

Breve introducción a Java

  • Java es un lenguaje de programación orientado a objetos.
  • Se rige con la filosofía “Write once, run anywhere”. (Es portable)
  • Al compilar el código, no se genera lenguaje máquina, si no que se genera un código intermedio que se llama ByteCode.
  • La única máquina capaz de ejecutar ByteCode es la “Java Virtual Machine”. (JVM)
  • La JVM es especificada por Oracle y es implementada por varias empresas. O sea, existen distintas “marcas” de JVM como: Oracle, IBM entre muchas más.
  • En una computadora pueden correr varias instancias de JVM.
  • Cada proceso Java se ejecuta en una JVM aparte.
  • Java + JVM + Utilidades para programar conforman una plataforma para el desarrollo de aplicaciones de usuario final.
  • Existen varias plataformas en Java: 1. SE (Standar Edition): Aplicaciones de escritorio. 2. ME (Mobile Edition): Dispositivos móviles. 3. EE (Entreprise Edition): Aplicaciones servidor.
  • Java se distribuye de varias formas: 1. JRE : Mínimo para ejecutar un programa. 2. JDK : JRE + SE. 3. Servidor de aplicaciones: Implementaciones de EE.

Paradigmas de programación

  • En general, es una forma de ver/entender/modelar el mundo.
  • En el ámbito del software, es un estilo fundamental de programación. Determina como el programa “ve” el mundo.
  • Determina como debe ser usado el lenguaje por el programador.
  • Algunos lenguajes de programación son multiparadigma.
  • Hay 4 paradigmas principales: Funcional, Lógico, Imperativo, Orientado a objetos

A. Paradigma lógico:

  • El mundo se modela mediante predicados lógicos.
  • Se aplica directamente principios de matemática discreta.
  • Para utilizarla en aplicaciones comerciales.
  • Prolog es el principal lenguaje.

B. Paradigma Funcional:

  • El mundo se modela como funciones matemáticas.
  • Lenguajes 100% funcionales: Lisp, Scheme.
  • Permite declarar funciones, pasar funciones por parámetro, retornar funciones, entre otros.
  • Muchos lenguajes modernos, han incorporado este paradigma por conveniencia.
  • Expresiones lambda.

C. Paradigma imperativo:

  • El mundo se modela como instrucciones, pasos, procedimientos.
  • Ampliamente utilizados en aplicaciones comerciales.
  • Tienden a ser muy eficientes (generalmente compilan en lenguaje máquina).
  • Gramaticalmente simples.
  • Se consideran como de nivel de abstracción bajo.
  • Ejemplos: C, C++

D. Paradigma Orientado a Objetos:

  • El mundo se modela como objetos del mundo real junto con su interacción.
  • Muy naturales para el ser humano.
  • Facilitan la reutilización de código.
  • Mayoritariamente, no generan lenguaje máquina.
  • Java, C++, Python, JavaScript.

VARIABLES.

Existen al menos dos tipos de tipos de variables:

  • Tipos primitivos: Son los más básicos. Ejemplos: int, float, char, double, byte

  • Tipos referencia: Son mas complejos. String se hereda de Object.

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

Objetos:

Es abstracto. Se caracterizan por tener atributos y comportamiento. Todos los objetos son referencias. Todos los atributos deben ser por general privados.

Abstracción:

Modelar algo dependiendo de las características dependiendo del problema que tengo que solucionar, dejando de lado todo aquello innecesario o complejo.

Encapsulamiento:

Existen cuatro tipo de modificadores de acceso:

  • Private
  • Public
  • Protected
  • Friendly (Default)

public class Persona(){
        private String nombre;
        public int edad;
        protected long ID;
        String Apellidos;

       

Polimorfismo:

  • Es parte del concepto de herencia.
  • Es la habilidad de tratar a un hijo como un padre
  • Reemplazar comportamientos del padre.

Auto auto1 = new AutoDeportivo();
Auto auto2 = new AutoFamiliar();
Auto auto3 = new AutoTrabajo();