Show Menu
Cheatography

Conceptos de la Programación Cheat Sheet (DRAFT) by

Conceptos de la Programación .....

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Inyección de depend­encias

Un patrón de diseño orientado a objetos en el que se sumini­stran objetos a una clase en lugar de ser la propia clase la que cree dichos objetos.
Formas :
- Constr­uctor
- Método Setter
- Variable de instancia / Propiedad

Solid

Single­-re­spo­nsi­blity
La clase, componente o micros­erv­icios deben hacer una cosa para disminuir futuras modifi­cac­iones y/o cambios.
Principio de respon­sab­ilidad única
Open-c­losed
Entidades deben de estar ABIERTAS para su extensión pero CERRADAS para su modificación.
Principio de abiert­o/c­errado
Liskov Substi­tution
Una subclase debe poder ser sustit­uible por su superclase.
Principio de sustit­ución de Liskov
Interface Segreg­ation
Segregar las clases tanto como sea posible.
Principio de segreg­ación de la interfaz
Dependency Inversion
Permite inyectar otras clases y añadir funcio­nalidad transv­ersal

Arquit­ectura - Capas de Aplicación

Presen­tation (UI)
Handles HTTP requests and responds with HTML OR JSON/XML
Service
Business logic
Data
Database access
Despite having a logically modular archit­ecture, the applic­ation is packaged and deployed as a monolith

Monolithic Archit­ecture

Benefits
- Simple to develop
- Simple to test (launch the applic­ation)
- Simple to deploy (Copy packaged app)
- Simple to scale horizo­ntally (Copy apps)
Drawbacks
- Limita­tions in size and complexity
- Applic­ation becomes to large and complex to fully understand and make changes fast.
- Size of applic­ation can slow down start-up time.
- Each update requieres entire applic­ation to be redepl­oyed.
- Changes require extensive manual testing.
- Continuous deployment becomes difficult.
- Adopting new techno­logies must be applied to entire applic­ation thus becomes expensive in both time and cost
In the early stages of the project it works well and basically most of the big and successful applic­ations which exist today were started as a monolith.

Micros­ervices Archit­ecture

Benefits
Manageable services (Faster to develop)
- Can be managed indepe­ndently
- New techno­logies are easier to apply
- Deployed Indepe­ndently
- Scaled Indepe­ndently
Drawbacks
Since it uses partit­ioned database archit­ecture each database must be handled indepe­ndently
- Testing is more complex (Must deploy the service and all of its depend­encies)
- Deploying becomes more complex (Requires planning and coordi­nation)
- Every service must be config­ured, deployed, scaled and monitored indepe­ndently
The ides is to split the applic­ation into a set of smaller interc­onn­ected services(Micros­ervice) instead of building a single monolithic applic­ation.
Each micros­ervice :
- Has its own hexagonal archit­ecture (UI, BL,DA)
- Has its own database schema thus ensures loose coupling
- Can use the type of database that best suits its needs (Poliglot persis­tence archit­ecture)

Que es OOP

Un modelo que organiza el diseño de software en torno a datos u objetos.
Beneficios :
- Reutil­ización
- Escala­bilidad
- Eficiencia

Principios de OOP

Encaps­ulacion
Toda la inform­ación importante está contenida dentro de un objeto y solo se expone la inform­ación selecc­ionada La implem­ent­ación y el estado de cada objeto se mantienen de forma privada dentro de una clase definida El objeto no tiene acceso a esta clase ni a la autori­zación para realizar cambios Llamar solo a una lista de métodos o funciones públicos
Abstra­ccion
Los objetos solo revelan mecanismos internos que son relevantes para el uso de otros objetos, ocultando cualquier código de implem­ent­ación innece­sario. La clase derivada puede tener su funcio­nalidad extendida
Herencia / Inheri­tance
Las clases pueden reutilizar código de otras clases Se pueden asignar relaciones y subclases entre objetos, lo que permite la reutil­ización de la lógica común mientras se mantiene una jerarquía única.
Polimo­rpphism
Los objetos están diseñados para compartir compor­tam­ientos y tomar más de una forma. Permite el paso de diferentes tipos de objetos a través de la misma interfaz.

Access Modifiers

public
acceso no está restri­ngido
protected
acceso está limitado a la clase conten­edora
internal
acceso está limitado al ensamblado actual
protected internal
El acceso está limitado al ensamblado actual o a los tipos derivados de la clase conten­edora.
private
El acceso está limitado al tipo contenedor