Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ICC - Repaso 2 Examen Parcial

ICC - Repaso 2 Examen Parcial

3fafd51aa8dad766208e11eaaa1d534c?s=128

Pablo Ángel Trinidad

November 12, 2018
Tweet

Transcript

  1. Basics

  2. Variables y datos primitivos Data type Tamaño Almacenan byte 1

    byte Enteros entre -128 y 127 short 2 bytes Enteros entre -32,768 y 32767 int 4 bytes Enteros entre -231 y 231-1 long 8 bytes Enteros entre -263 y 263-1 float 4 bytes Números “flotantes” double 8 bytes “Flotantes” de doble precisión boolean 1 bit true o false char 2 bytes Caracteres unicode entre \u0000 y \uffff
  3. Estructuras de control (Decision-making statements) if-then if-then-else switch

  4. Estructuras de control (Looping statements) while do-while for

  5. OOP Object-oriented Programming * * POO en español (programación orientada

    a objetos)
  6. ¿Objetos? ABSTRACCIONES de datos que consisten en: Representación interna Interfez

    para interactuar (Atributos) (Métodos/funciones)
  7. ¿Objetos? Representación interna Interfez para interactuar • Puertas • Llantas

    • Color • Motor • Marca • Modelo • … • Acelerar • Pintar • Tocar claxon
  8. Celebridades • Nombre • Ocupación • Nacionalidad • Popularidad •

    Amigos Atributos Métodos • Crear meme • Mostrar frase popular • Actualizar popularidad • ¿Es amigo de X?
  9. Estado • Nombre: Drake • Ocupación: Cantante • Nacionalidad: Americano

    • Popularidad: 0.89 • Amigos: Neil • Nombre: Neil Degrasse Tyson • Ocupación: Físico • Nacionalidad: Americano • Popularidad: 0.51 • Amigos: Drake, Bear • Nombre: Bear Grylls • Ocupación: “Adventurer” • Nacionalidad: Inglés • Popularidad: 0.18 • Amigos: Neil
  10. Objeto A bicycle modeled as a software object https://docs.oracle.com/javase/tutorial/java/concepts/object.html

  11. ¡El objeto tiene el control total sobre cómo el mundo

    exterior tiene permiso a usarlo!
  12. Objetivos: • Modularidad: Las funcionalidades de cada objeto tienen que

    estar bien delimitadas de forma que cada objeto sea específico a la tarea que resuelve.
 • Bajo nivel de acoplamiento: El código fuente de un objeto tiene que poder ser escrito y mantenido independientemente del código de otros objetos, es decir, debe depender muy poco o casi nada de otros objetos.
 • Alta cohesión: Todos los elementos que se encuentran altamente relacionados entre sí deben encontrarse dentro de un mismo “módulo”. • Encapsulamiento: Al interactuar con otros objetos, los detalles de la implementación interna deben permanecer ocultos al mundo exterior
  13. Objetivos: • Modularidad : Cada quien a lo suyo y

    en su lugar
 • Bajo nivel de acoplamiento : Nadie debe depende de otros
 • Alta cohesión : Si múltiples objetos hacen tareas relacionadas entre sí, manténlos juntos. • Encapsulamiento : Sólo el mismo objeto puede modificar y conocer su implementación, el mundo exterior se tiene que comunicar a través de los métodos
  14. ¿Objetos o clases? Clases Objetos (instancias) Esqueleto Clase con datos

  15. Clases en Java

  16. 4 Pilares de OOP Encapsulamiento Abstracción Herencia Polimorfismo

  17. 4 Pilares de OOP (Encapsulamiento) Se asegura que sólo el

    mismo objeto sea dueño de sus métodos y atributos y que este sea el único quien decide cómo se acceden o modifican dichos recursos.
  18. 4 Pilares de OOP (Abstracción) El objetivo es que código

    ajeno al objeto NO se tenga que preocupar por la implementación interna.
  19. 4 Pilares de OOP (Herencia) Es un mecanismo que nos

    permite eliminar código redundante, es decir, nos evita repetir código.
  20. 4 Pilares de OOP (Herencia) Es un mecanismo que nos

    permite eliminar código redundante, es decir, nos evita repetir código. https://docs.oracle.com/javase/tutorial/java/concepts/inheritance.html
  21. 4 Pilares de OOP (Polimorfismo) Permite que una operación con

    el mismo nombre se comporte diferente dependiendo de quién sea la clase o con qué argumentos sea ejecutada
  22. 4 Pilares de OOP Encapsulamiento Abstracción Herencia Polimorfismo

  23. Java OOP

  24. Modificadores de acceso “Definen el alcance de una clase, constructor,

    variable o método” Modificador Clase Paquete Subclase Todos private ✅ ( ( ( default ✅ ✅ ( ( protected ✅ ✅ ✅ ( public ✅ ✅ ✅ ✅
  25. Clases <modificador> <tipo> <nombre>; Variables public int age; Funciones <modificador>

    <tipo> <nombre>(argumentos); private int fibonacci(int n); Constructores <modificador> <nombreDeClase>(argumentos); public Human(String name, int age);
  26. Interfaces ¡Contratos! • Sólo puede contener constantes y firmas de

    métodos • No pueden crearse instancias de una interfaz • Sólo pueden ser implementadas por clases • Sólo pueden ser extendidas por otras interfaces
  27. Interfaces ¡Contratos! <modificador> interface <nombre> {…} Declaración public interface Coche

    {…} <modificador> class <nombreClase> implements <nombreInterfaz> {…} Implementación public class BMW330i implements Coche {…} “BMW330i implementa Coche” “BMW330i sigue la implementación de Coche”
  28. Interfaces ¡Contratos! Interfaz Implementación

  29. Herencia Definición: Una clase que deriva de otra clase es

    llamada subclase (también llamada clase hija). La clase de la cual la subclase está derivando es llamada superclase (también llamada clase padre). A excepción de la clase Object, la cual no tiene superclase, todas las clases tienen una y sólo una superclase directa. En caso de que no se especifique de manera explícita, todas las clases heredan de Object Las clases pueden derivar de clases que derivan de clases que derivan de clases y así consecutivamente, finalmente derivando en la última superclase Object. Dicha clase se considera como descendiente de todas las clases en la cadena de herencia.
  30. Herencia <modificador> class <nombre> {…} Declaración public class Human {…}

    <modificador> class <nombreClase> extends <nombreInterfaz> {…} Herencia public class Profesor extends Human {…} “Profesor extiende a/de Humano” “Profesor hereda de Humano” “Profesor es subclase de Humano” “Humano es superclase de Profesor” “Profesor es descendiente de Humano y Object”
  31. Herencia

  32. Herencia

  33. Herencia • Una subclase hereda todos los miembros public y

    protected del padre. • Se puede declarar un atributo con el mismo nombre que una atributo del padre. • Se pueden declarar nuevos atributos. • Se pueden declarar nuevos métodos. • Los métodos y atributos heredados pueden ser usados normalmente. • Se puede sobre escribir un método del padre si se usa la misma firma. • Se puede invocar al constructor padre dentro del constructor hijo usando super. En una subclase:
  34. Clases abstractas • No pueden crearse instancias de una clase

    abstracta
 • Sólo pueden ser extendidas por clases
 • Puede contener variables públicas, protegidas o privadas a diferencia de una interfaz
 • Los métodos implementados no son static, public y finals por default
  35. ¿Clases abstractas vs Interfaces? Clases abstractas Interfaces • Se quiere

    compartir código entre múltiples clases con alta relación entre sí.
 • Las clases que extiendan a la clase abstracta tienen muchos métodos y/o atributos en común.
 • Quieres declarar atributos que no sean finales ni estáticos • Las clases que implementen esta interfaz no tienen relación entre sí.
 • No te importa la implementación de cierto comportamiento.
 • Quieres implementar múltiples interfaces.
  36. Clases abstractas abstract class <nombre> {…} Declaración abstract class GraphicObject

    {…} <modificador> class <nombreClase> extends <nombreInterfaz> {…} Herencia public class Circle extends GraphicObject {…}
  37. Clases abstractas Clase abstracta Subclases

  38. Java Memory Allocation

  39. Exceptions https://docs.oracle.com/javase/tutorial/essential/exceptions/throwing.html

  40. Memorizar pal’ examen

  41. Memorizar pal’ examen “Funciones de un objeto” •Constructoras •De implementación

    •De acceso •Auxiliares •Actualización y manipulación “Stack” “El Stack (Pila) se utiliza para almacenar variables locales, variables de referencia, parámetros, valores de retorno y resultados parciales. También se utiliza para llevar el control de la invocación y retorno de los métodos” “Heap” “El Heap (Montículo) almacena objetos y sus variables de instancia. Es un espacio de memoria dinámica que se crea al inicio de la máquina virtual y es único.”