Please enable JavaScript.
Coggle requires JavaScript to display documents.
PROGRAMMING II Object Oriented Programming, Si no se puede instanciar, por…
PROGRAMMING II
Object Oriented Programming
OOP
WEEK 1:
Paradigma OO
Orientacion a Objetos
Clases y Objetos
JAva Constructors
Pilares de la OOP
Pilares de POO
Herencia
La capcidad para heredad, transferir
Para relacionar clases
Herencia | Inheritance
Una clase hereda de otra clase
is-a relationship
Cuando queremos heredar atributos metodos
3 more items...
Mi clase anterior no cubre todo, me gustaria añadir. "Customize" una clase anterior
New class funcionality = Old calss functionallity + extra
2 more items...
Cuando una clase padre
(superclase)
--> hereda atributos y métodos a las clase hija (
subclase
)
JAva
Tipos de herencia
SImple inherit
1 more item...
Multinivel Inherit
Grandchildren
1 more item...
Hierarchy INherit
two
classes
children
1 more item...
Multiple Inherit (NO in java)
2 parents
1 more item...
polimorfismo
Un objeto para tomar diferentes formas o comprotarse de firentes formas decuardo al contexto
EL polimorfismo permite que diferentes objetos respondan de modo diferente al mismo mensjae
SU maxima potencia es cuando se une con HERENCIA
Es posible tener mas de un contructor
Sobrecarga de metodos
Varias funciones con el mismo nombre porque si son diferetes el la firma son diferentes para mi programa
Override
Sobre escritura
Utilizar ocsas que ya estan escritas pero modificarlas a nuestra conveninecia
1 more item...
Iplemntar o mismo que los padres
Un bjeto puede
Tiene generalizacion(super-clase) y especialización(sub-clase)
Abstracción
OCutlar detalles internos y mostrar solo lo esencial
clase abstracta
characteristics
It cannot be instantiated
have abstract and non abstract methods
2 more items...
It can have cosntructors and static methods
It can have final method
Like creating a template, it doesnt develop anything just the template. THe structure and rules no more
encapsular (Proteger)
Ocultar atributos que no queremos que se muestren a todo el programa. Solo pueden ser accedidos dentro de esta clase
Guardar mi código porque ahora quiero que sea privado (Receta secreta Cangry burgers)
Agrupar datos y métodos y asegurar su acceso.
GETTER Y SETTER
Para obtener datos de un lugar PRIVADO
GETTER
OBtain values
SETTER
Establish value
EJEMPLO COMPLETO
modificador de acceso
guardia de los condominios
public
en cualquieer clase sirve
Por default public
private
no deja pasar a nadie excepto el due;o
no existe en otras clases, just in Main
YOur atributes is better to do private
protected
Este metodo lo conocen
todos sus parientes
Elementos de la misma carptea, pero los que es[tan fuera, no
void
No hay control
NO retorna nada, por lo cual non necesita el return
Por defecto haz a las clases void, y solo si quieres guardar el valor le cambias
static
Para no tener que instanciarlo
default
SOlo permitido dentro del package. NO puede ser accedido fuera delmismo
OOP en Java
OOP
Week 2
UML Y MANEJO DE EXCEPCIONES
OOP - Relaciones
relaciones de clases
Asociaciones
has a (dependencia)
Lo que típicamente pienasa al crear un diagrama ER
COmposicion
todo-parte DEPENDENCIA
pertenece a
Flechita negra
Agregación
todo- parte (whole-part) INDEPENDENCIA
Independencia. Se colaboran pero ambos existen
Java: Manejo de Excepciones
pritnStackTrace() Esto sirve para trackrear en donde hubo el problema
TRy - catch
Atrapas la excepcion usualmente te sale en consola cual es el error
excepcionest
tipos
Se pueden poner muchos
try-catch
finally
Algo que si o si se ejecuta, haya o no haya errores
Ejemplos
cerrar el archivo para que no use memoria
QUe isi os is cierra secion
throws
Excepciones customizadas
Lanzamos excepciones de forma controlada
1ro Crear la expecion customizada, heredar de la clase Exception
Esta funcion puede que lance esta otra excepcion
WEEK3
Clases abstractas
2 formas de abstracción
Interfaces
INTERFAZ (skills)
Pensar en un "tipo" conjunto (manzanas, etc)
clases no-relacionadas
cuando vemos de hacer la
herencia múltiple
( no se puede heredar de varios, pero si se pueden implementar varias interfaces)
Pensar como en "habilidades".
A es capaz de [hacer esto]
Contrato (Te obliga a hacer n cosas)
No define atributos
Una clase puede implementar muchas interfaces
Se puede heredar otra interfaz
Implemta interfaz + herencia
2 en 1
o 3 en 1
Define comportamiento (metodos). No se desarrolla
(y todos son
public
)
Abstract CLasses
Una clase incompleta. Empezamos un trabajo pensando que alguien más hará el completo
No se instancia
Puede haber metodos desarrollados o no (metoos abstractos y no-abstractos)
La subclase termina el trabajo
Puede tener constructores y métodos estáticos
Puede tener métodos finales, que las sub-clases no pueden extender
Métodos finales
Principio Open-Closed
Dentro de los principios SOLID
Abiertas a extensión, pero cerradas para modificación (sin modificar su código fuente)
SUPER CLASE
Herencia total, no son plantillas sino que implementas todo a sus hijos
Java: Enumerations
Mayusculas
cada valor es una instancia
Dentro del parametro puesdes recibri lo que sea, cualquier tipo
Incluso m[as complicadito pueden ser los enums. Tener otros objetos dentro
PACKAGES
AUtoboxing and Unboxing
Clases contenedoras (Wrapper classes) wrapper = envoltura
Convierte los tipos primitivos a objetos
Class Packaging
Agrupar clases relacionadas
Organizar clases y evitar conflicos con sus nombre
importar
2.
DATA sTRUCTURES
Week 4
Java Collections Framework (java.util)
Ayudan enlas operaciones CRUD, contiene todos los DS listos para ser extendidos
Abstract Data TYpes y generics (ADT)
Los DS implementan un ADT
Tipos de datos abstractos
son modelos teóricos que definen qué hace una estructura de datos (ej. una pila, cola) y sus operaciones (añadir, quitar) sin decir cómo se implementa internamente.
Basicamente describe a un tipo de dato (Ej, int) y qué operaciones se puede hacer con este int
Para que nos sirve ADT?
sON INTERFAZES, PODEMOS IMPLEMENTARLA DE DIFERENTEES MANERAS, USANDO DIFERENTES ESTRUCTUARAS DE DATOS
Los Generics
permiten que estos TDA sean flexibles,
(Interfaces genericas)
CHARACTERISTICS
parametrizan el tipo de dato
"Aqui va alg[un tipo.. todav[ia no s[e cual"
COnvenciones comunes.
Se puede usar cualquie letra pero se prefiere
Una implemenyacion
LIST
Una interfaz de la que se hereda
CONTROL SOBRE EL INDICCE DE LA SECUACION
ArrayList
LinkList
Acciones que se pueden hacer
Busquedas en listas
Buscando objetos
Busqueda Lineal
Busqueda secuencial verificar cada elemento de la lista uno por uno
1 more item...
COmparando OBjetos
metodos para comparar
equals()
Ordenando Listas
natural
compareTo()
1 more item...
Collection.sort()
1 more item...
personalizado
INterface List
Array List
DESVENTAJAS
Cuando quiero insertar uno nuevo, todos recorren a la derecha
Cuando se llena, lo destruye y construye un array m[as grande y lo copia
VENTAJAS
Reserva un espacio en memoria
LinkedList
Ideal par operacion add, remove
VEntajas
No reserva un espacio en memoria. La memoria es randomica
PUntero hacia el siguiente elemento
Inserci[on de elementos m[as rapida al principio y final
Porque tenemos un puntero TAIL y ROOT. No necesita estar recorriendo todos a la derecha como el Array List
Memoria dinamica.
CUando el array list se llena, clona y crea otro. SIn embargo este no se llena a no ser que tu sistema operativo se llene
desventajas
Encontrar valor es mas dificil
Ordenamiento y Búsqueda
busqueda
Busqueda lineal
ordenamiento
Ordenameinto natual
Implementando la interfaz Comparable
<<Interfaz>>
Comparable
.comparteTo()
Por dfecto como se comparan las cosas. EN este caso los estudiantes por defecto se compararán pro su nombre
Ordenamieto personalizado
Data Structures
Ahora veremos estructuras dinámicos (no estáticos)
VECTOR
UN adt DINAMICO QUE SE UTILIZA CUNADO SE NECESITA UNA COLECCION DE ELEMENTOS QUE CRECE O DISMINUYE DE MANERA EFICIENTE
Week 5
Stack / pila
Estructura se isnerta por delante
LIFO
UTil para UNDO y Redo
methods
push()
insertar valores
.pop()
No necesita indice, directamente elimina el LIFO. El [ultimo en entrar lo elimina
.peek()
No se elimina, simplemente se obtiene el n[umeor
<<Interfaz>>
Queue
Define una ADT de cola (FIFO)
code
EJEMPLO EN L A COLA de impresi[on
Methods
.peek()
Acceder al primer elemento de la cola, sin eliminarlo
.poll()
Devuelve y elimina
enqueue
agregar al final
.add(cliente);
dequeue
sacar del frente
.remove()
.OFFER()
Como el push, para insertar datos
Deque
COla doble
POr ejemplo turno de ir a la sauna, entran 10, cuando quiere entrar un 1 mas. EL m[as antiguo debe salir
usos
Doble funcionalidad, puede eliminar y agregar tanto por el frente como por la coal
VEntanas
rotaci[on de stock
SI quieres crear una cola con un l[imite m[asximo de elementos
(Osea hasta que se llene, si se llena el ultimo elemento debe irse)
Methods
addFirst()
addLast()
removeFirst()
removeLast()
COde
Set
COnjunots, en con juntos NO HAY DUPLICADOS
methods
METHODS
.add()
agregar
It doesn't follow a specific order is randomly.
.remove()
eliminar
Not by index, but for specific must be
equals()
verificar la existencia. Se itera sobre los elementos comparando uno a uno
operaiciones de conjuntos
union
.adllAll()
interseccion
.retainAll()
substraction o diferencia
.removeAll
code
HashSets
LinkedHashSet
Si interesa mantener el orden
No acepta duplicados
Mnatiende el orden de entrada. Garantiza el orden de entrada
Internamente usa hashing
algunos algoritmos
FIFO, LIFO
hashCOde()
Utilizar una traducci[on "firma numérica" para facilitar la búsqueda y rganizacion de objetos
hashing properties
SI 2 objetos son iguales, entonces deben tener el mismo valor hash
SI no son iguales, podrían o no tener le mismo valor hash
DEbe ser consistente en el timepo, si se calcula multiples veces
Trabaja con el equals
Dentro de la clase, cada clase sabe c[omo compararse
Week 6
Estructura de datos Map
Data Structures Map / diccionario
MAPA
DEfinicoin
Key Value
La palabra clave.
Map es un objeto contenedor que almaceno elementos en forma de key-value dentrominadas ENTRIES
Parecidos a los diccionarios
CARACTERISTICAS
Mapeo one-to-one.
Cada llave mapea exactamente un valor.
Los valores pueden ser dubplicados pero las llaves no
Ambos, llave valor deben ser OBJETOS. No pueden ser tipso primitivos
La parejita clave-valor se denomina ENTRY
CLASES QUE IMPLEMENTAN LA INTERFAZ
Tree Map
uso comun
Las claves estan en una estructura.
AParte de clave valor esta ORGANIZADA.
Se mantiene por orden. como tODOS APLEEDIOS DE A-D, de E-L
RECORRER UN RANKING CUANDO TE IPORTA EL ORDEN. "ORDEN" mas que velocidad
JSON VS SQL NORAMLIZADO
SUPER NORMALIZADO
BUSQUEDA
HashMap
Sporta genericas
pROCESAMIENTO DE LENGUAJE NATURAL
Mecanica de un Hash map
SE BASA EN CONCEPTO DE TABALAS HASH
Estructura interna en buckets
TECNICAS
Hashing
EL procedimiento de CALCULAR el hash utilizando su m[etodo hashCOde()
Encriptar
Buckets (Casilleros)
Encadenamiento
Como maneja colisiones.
Hash el mismo? LO guarda en una lista enlazada
Uso comun
Se usa cuando buscar o acceder a datos. IDs de clietnes
CUNADO TENGAMOS UNA CLAVE.
lINKEDhASmAP
ConcurrentHashMap
Streams Introduction
Una herramienta para procesar y manipular datos de manera funcional y declarativa
UNa alternativa elegantepara las operaciones en colecciones
Secuencia de elementos (FLujo)
OPeraciones de flujo (pipelines)
Operaciones finales
FOr ecah()
Tranformar
1 more item...
REducir datos
1 more item...
collect()
Operaciones intermedias
FIltrar
2 more items...
Common Uses
BUsque da y recuperacion
Mas eficiente la busqueda
NO vamos de nodo en nodo como en la lista, sino que directametene
N movimientos VS 1 movimiento
Indeexar informacon relacionada con un ID unico. REcuperar rapidamente
COntar y analizar info
Estadistico
analiss de texto, para contar
PRocesamiento del lenguaje natural.
COntar la cantidad de veces que aparece una palabra
comunmente al
agrupar
y
acumular
hacemos conteos
MOnitoreo de eventos
Dahsoards de sistema
SIstema de alarmas
ALmacenameinto en cache y memorizacion
Almacenar resultados previamente calculados
Se evitan calculos repetidos directo vamos al id. Mejora el rendimiento de la aplicacion
COmo las VISTAS en SQL guardan datos temporales que te ahorarn memoira
POrque los datos cuenado estan en cache, no tenemos que volver a repetir y hacer el calculo.
Eso despues de la 2da vez
mETODOS
https://docs.google.com/spreadsheets/d/1_kypqvL99qTmUse-GIj8T-cJD2rCiSTvoprTAtHY0GY/edit?usp=sharing
Mapa de mapas
COmo carpeta dentro de carpetas
Mejores practicas
Week 7
Clean Code
Variables
No poner variables que no vas a usar
Variables significativas
Preguntas l[ogicas.-
no hacer preguntas negativas
Code Smells
Refactorization
Que el codigo funcione no significa que este bien.
Best Practices
Week 8
Best Practices
Design Principles
KISS
YAGNI
DRY
SOLID
Grasp & Cupid
principios
Responsabilidad única
Una sola tarea.
Un solo método
Más modular menos propenso a afectar otras partes del código
Cuando tiene muchos y más adelantes queremos modificar, podemos hacer que otros se arruine
DRY No repetir código que ya hayamos escrito
DRY
Comportameinto común agrupalo en uno solo
Principio KISS Keep it simple, stupid
No tanta validación de código, simple
Week 9
Design Patterns
Creacionales
SIngleton
Singleton == Una sola instancia para todo el proyecto
Factory MEthod
Estructurales
Facade
Comportamiento
Strategy
Si no se puede instanciar, por qué hay constructor?