¿Por quéaprender
Programación Orientada a
Objetos?
Programarmás rápido
Encapsulamiento
Abstracción
Herencia
Polimorfismo
Dejar de ser Programador Jr.
*Reclutadores
Dejar de Copiar y Pegar Código
Programarmás rápido
Ser un Programador Sr.
y conseguir un mejor salario
¿Qué haremos?
- Observación
- Entendimiento
- Lectura
Problemas
- Diagramas
Análisis deproblemas
- Lenguajes de
Programación
Diagramas
¿Qué resuelve?
Programación
Orientadaa Objetos
Programación
Estructurada
Programación Estructurada
Programación
Orientada a
Objetos
Código muy largo
Programación
Estructurada
Código muy largo
Si algo falla, todo
se rompe
Programación
Estructurada
Código muy largo
Si algo falla, todo
se rompe
Difícil de mantener
Programación
Estructurada
if(){}else {}
Programación
Orientadaa Objetos
Programación
Orientadaa Objetos
POO
Orientacióna
Objetos
Orientación aObjetos
Surge a partir de los problemas que
tenemos y necesitamos plasmar en
código
Orientación aObjetos
Observar los problemas en
forma deobjetos
Paradigma
Programación Orientada
a Objetos
Paradigma
+ Teoría que suministra la base y
modelo para resolver
problemas
Paradigma de
Programación
Orientadaa Objetos
+
Clases
Propiedades
Métodos
Objetos
Paradigmade
Programación
Orientadaa Objetos
+
+
Encapsulamiento
Abstracción
Herencia
Polimorfismo
Lenguajes
Orientados aObjetos
- Java
- PHP
- Python
- JavaScript
- C#
- Ruby
- Kotlin
- Java
- PHP
- Python
- JavaScript
- C#
- Ruby
- Kotlin
- Orientadoa Objetos
naturalmente
- Android
- Server Side
.java
- Lenguaje interpretado
- Pensado para la Web
.php
- Diseñado para ser fácil de usar
- Mútiples usos: Web, Server
Side, Análisis de Datos,
MachineLearning, etc.
.py
- Lenguaje interpretado
- Orientado a Objetos pero
basado enprototipos
- Pensado para la Web
.js
Entornode
Desarrollo
- Visual Studio Code
Diagramasde
Modelado
OMT UML
Object Modeling
Techniques
+ Metodología para el análisis
orientado aobjetos
Unified Modeling Language
Lenguaje de Modelado Unificado
Unified Modeling Language
+ Clases
+ Casos deUso
+ Objetos
+ Actividades
+ Iteración
+ Estados
+ Implementación
OMT
1991
UML
1997
OMT
1991
UML
1997
Objetos
- Cuando tengamos un problema lo
primero que debemos hacer es
identificarObjetos
Objetos son
aquellos quetienen
propiedades y
comportamientos
- Pueden ser Físicos o Conceptuales
User Session
Propiedades
también pueden
llamarse atributos
serán sustantivos
Propiedades
también pueden
llamarse atributos
serán sustantivos
Comportamientos
serán todas las
operaciones del objeto,
suelen ser verbos o
sustantivo yverbo
Comportamientos
serán todas las
operaciones del objeto,
suelen ser verbos o
sustantivo yverbo
+nombre
+color
+raza
+altura
+ nombre + ladrar
+ color + comer
+ raza + dormir
+ altura + correr
Propiedades
Comportamientos
+id
+nombre
+color
+raza
+altura
Propiedades
+serAdoptado()
Comportamientos
+ id: 001
+ nombre: Franky
+ color: Café
+ raza: French Poodle
+ Altura: 40cm
Clase
- Es el modelo sobre el cual se
construirá nuestroobjeto
- Las clases me permitirán generar
más objetos
Analizar Objetos
para crearClases
Abstracción
Clases son los
modelos sobre los
cuales construiremos
Objetos
Modularidad
Diseño Modular
Estructurada Modular
Orientadoa Objetos
Modular
Orientadoa Objetos
+Reutilizar
+Evitarcolapsos
+Mantenible
+Legibilidad
+Resolución rápida de
problemas
Clase
- Modularidad
- Divide el programa en diferentes partes
o módulos / clases
- Separar las clases en archivos
Clases
NombreClase
Atributo 1
Atributo 2
Atributo 3
Atributo n
Operación 1
Operación 2
Operación 3
Operación n
Identidad
Estado
Comportamiento
UML
Person
name
walk ()
Java Python
PHP
JavaScript
classPerson:
classPerson{}
function Person(){} classPerson{}
Java Python
PHP
class Person {
String name=“”;
void walk(){}
}
JavaScript
Person.prototype.walk =function(
)
{
}
class Person:
name =“”;
defwalk():
class Person{
$name =“”;
function walk(){}
}
- Promueve la reducción de duplicación
en programación
- Toda pieza de información nunca
debería ser duplicada debido a que
la duplicación incrementa la
dificultad en los cambios y evolución
Reutilización
Herencia
Herencia
crearemos nuevas
clases a partir de otras
- Se establece una
relaciónpadre e hijo
Superclase
Subclase
Objeto
Java Python
PHP
JavaScript
persona =Person()
Person person =newPerson();
var person =newPerson(); $person =newPerson();
Java Python
PHP
JavaScript
person =Person()
Person person =newPerson();
var person =newPerson(); $person =newPerson();
- Dar un estado inicial al objeto
- Tiene el mismo nombre de la clase
- Son los parámetros mínimos que
necesita el objeto para que pueda
vivir
Java Python
PHP
public function__construct($name){
$this->name=name;
}
JavaScript
function Person(name){
this.name =name
}
public Person(Stringname){
this.name =name;
}
def __init__(self,name):
self.name =name
Java Python
PHP
JavaScript
person =Person(“Ann”)
Person person =new
Person(“Ann”);
var person =new
Person(“Ann”);
$person =newPerson(“Ann”);
Herencia
Java Python
PHP
JavaScript
classStudent(Person):
class Student extendsPerson
student.prototype =newPerson(); class Student extendsPerson
Encapsulamiento
- Para que un dato permanezca
inviolable, inalterable, se le
asigna un modificador de acceso
public
protected
default
private
public
protected
default
private
Todas lasclases
Clases, Paquetes y Subclases
Clases y Paquetes
Clases
Getters ySetters
Polimorfismo
- Muchas formas
- Construir métodos con el mismo
nombre pero con
comportamiento diferente
Las clases se representan de la siguiente manera:
.Que contienen clases (titulo), atributos (propiedades), métodos(funciones) y relaciones.
La visibilidad: Define la accebilidad para ese atributo o método que se definen de la
siguiente manera:
• Privado (-): Cada método o atributo son privados, ninguna clase o subclase puede
acceder a ellos.
• Público (+): Cada método o atributo son públicos, y cualquier clase o subclase
puede acceder a ellos.
• Protegido (#): Solo la misma clase o subclase pueden acceder a ellos.
• Paquete/defecto (~): Define la visibilidad del paquete o por defecto lo que
significa y que puede ser usada por un paquete.
La visibilidad: Define la accebilidad para ese atributo o método que
se definen de la siguiente manera:
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx

programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx