0% encontró este documento útil (0 votos)
11 vistas23 páginas

Terminología Básica de La POO

El documento presenta una introducción a la programación orientada a objetos (OOP), explicando conceptos fundamentales como clases, objetos, encapsulamiento, abstracción, atributos y métodos. Se ilustran ejemplos prácticos para clarificar cómo se definen y utilizan estos elementos en programación, así como sus características y ventajas. Además, se abordan conceptos avanzados como herencia y polimorfismo, que permiten la reutilización de código y la creación de jerarquías en el diseño de software.

Cargado por

irvinvazquez115
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas23 páginas

Terminología Básica de La POO

El documento presenta una introducción a la programación orientada a objetos (OOP), explicando conceptos fundamentales como clases, objetos, encapsulamiento, abstracción, atributos y métodos. Se ilustran ejemplos prácticos para clarificar cómo se definen y utilizan estos elementos en programación, así como sus características y ventajas. Además, se abordan conceptos avanzados como herencia y polimorfismo, que permiten la reutilización de código y la creación de jerarquías en el diseño de software.

Cargado por

irvinvazquez115
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 23

introduccion a

PROGRAMACION
ORIENTADA A OBJETOS
INTEGRANTES:
HERNANDEZ MARTINEZ MANUEL
ANGEL BENITEZ HERNANDEZ
LEONARDO SAUCEDO JUAREZ
IRVIN JOHAN VAZQUEZ SORIANO
CLASES : CONCEPTO
COMO PLANTILLA

Una clase en programación orientada a objetos (OOP) es un


modelo o plantilla que define las propiedades y
comportamientos de un conjunto de objetos.

Imagina que una clase es un molde para hacer galletas:

El molde define la forma y características de la galleta.Pero el


molde por sí mismo no es una galleta, solo la plantilla para crear
muchas galletas con la misma forma.
OBJETO:
Un objeto es una instancia concreta de una clase, es decir, una copia
real con valores específicos.
Siguiendo la analogía del molde de galletas:
Si la clase es el molde, los objetos son las galletas hechas con ese
molde.
Cada objeto tiene su propia existencia, pero sigue la forma del
molde
EJEMPLOS
En este ejemplo podemos ver como usasmos el struct en C para
definir una estructura similar a una clase .

Clase como plantilla (usando el struct):


struct Persona es la plantilla (como una clase en otros lenguajes).
Define los atributos que tendrá cada persona creada con este
molde.
No hay personas aun solo es el molde.
EJEMPLOS
En este ejemplo podemos ver otro ejemplo con struct, pero ahora nos
concentraremos en la creacion del objeto.

Objeto como instancia de una clase:


miAuto es un objeto, una copia real con valores específicos.
Tiene la estructura definida en Auto, pero ahora con datos
concretos.
HOME ABOUT MORE

ENCAPSULAMIENTO,
ABSTRACCIÓN
Encapsulamiento Abstracción
El encapsulamiento es uno de los principios fundamentales de La abstracción implica ocultar los detalles complejos del
la programación orientada a objetos (POO). Consiste en: funcionamiento interno de un objeto o sistema, mostrando
Proteger los datos internos de un objeto al restringir el solamente lo esencial para su uso. Se enfoca en qué hace el
acceso directo desde el exterior. objeto, sin entrar en cómo lo hace.
Permitir el acceso o modificación de estos datos Ventajas de la abstracción:
únicamente a través de métodos específicos.} Simplificación: Reduce la complejidad para el usuario final.
Flexibilidad: Permite cambiar los detalles internos sin
Ventajas del encapsulamiento: afectar a los usuarios del objeto o sistema.
Seguridad: Protege los datos sensibles de modificaciones Facilita la colaboración: Los desarrolladores pueden
no controladas o accidentales. trabajar en diferentes niveles de abstracción sin interferir.
Modularidad: Facilita el mantenimiento del código, ya que
cada objeto maneja su propio estado interno.
Reutilización: Componentes encapsulados pueden usarse
en diferentes contextos sin riesgo de interferencias.
ATRIBUTOS
los atributos son aquellas caracteristicas
que se la asignan a un objeto o una clase,
cada objeto tiene un espacio de memoria
para cada atributo que se le asigna en un
determinado momento, para determinar
con que atributos contara cada uno, se
determinan mediante 4 principales clases
las cuales son entradas y salidas, variables
intermedias y constantes
CARACTERISTICAS DE
ATRIBUTOS

Son propiedades que diferencian a un objeto de otro


Determinan la apariencia, estado u otras cualidades de un objeto
Pueden ser datos de entrada y salida
Pueden ser variables intermedias que no se calculan en cada
momento
Pueden ser constantes, como el valor de π
Pueden ser información intermedia que no estaba planteada de
inicio como entrada o salida de información
EJEMPLOS DE ATRIBUTOS

En un coche, los atributos podrían ser el color, las dimensiones o el


número de plazas
En una clase que describe las características comunes de todos
los automóviles, los atributos podrían incluir la marca, el color, las
dimensiones, la potencia, etc.
EJEMPLOS DE
TIPO NOMBRE_DEL_ATRIBUTO; ATRIBUTOS PUBLICOS
CLASS NOMBRECLASE {
ACCESO:
TIPO ATRIBUTO1; class Persona {
TIPO ATRIBUTO2; public:
}; string nombre; // atributo tipo string
int edad; // atributo tipo int
float altura; // atributo tipo float
sintaxis dentro de una };

clase
public: Atributos accesibles desde fuera de la clase.
Cualquier código puede leerlos o modificarlos directamente.
private: Solo accesibles dentro de la clase. Se usan getters y
setters para acceder o modificar desde fuera.
protected: Como private, pero accesibles también en clases
hijas (herencia).
static: Atributo compartido por todas las instancias de la
clase. No depende de cada objeto.
const: Atributo que no cambia. Se asigna una vez (al crear el
ATRIBUTOS PUBLICOS, objeto) y ya no se puede modificar.

PRIVADOS Y
PROTECTED
SINTAXIS DE ATRIBUTOS
PRIVADOS Y PROTECTED

01 02
ESTATICOS Y
CONST
03 04
METODOS

Un método es una función que se define dentro de una


clase y se utiliza para representar el comportamiento de
un objeto. Los métodos se utilizan para realizar tareas
específicas en un objeto, como cambiar el estado de un
objeto, calcular un valor, interactuar con otros objetos,
etc.
En la programación orientada a objetos (POO), los
métodos son funciones que permiten a los objetos
realizar acciones o manipular sus atributos. Son similares
a los procedimientos o funciones de la programación
estructurada.
CARACTERISTICAS Y
EJEMPLOS DE METODOS

CARACTERISTICAS EJEMPLOS
Permiten realizar acciones con los objetos de
Recuperar la información de un atributo almacenado
una clase Modificar el estado de un objeto
Representan el comportamiento de los objetos Enviar mensajes a un objeto para que realice una acción
Se programan con verbos Instanciar un objeto de una clase en la memoria de la
Pueden recuperar, modificar o crear objetos computadora

Pueden devolver un valor o ejecutarse sin


retornar un valor
EJEMPLOS

class Persona {
TIPO_DE_RETORNO NOMBRE_METODO(PARÁMETROS); public:
void saludar() {
cout << "Hola!" << endl;
}

int obtenerEdad() {
sintaxis return 25;
}
};
HOME ABOUT MORE

ENCAPSULAMIENTO,
ABSTRACCIÓN
Encapsulamiento Abstracción
El encapsulamiento es uno de los principios fundamentales de La abstracción implica ocultar los detalles complejos del
la programación orientada a objetos (POO). Consiste en: funcionamiento interno de un objeto o sistema, mostrando
Proteger los datos internos de un objeto al restringir el solamente lo esencial para su uso. Se enfoca en qué hace el
acceso directo desde el exterior. objeto, sin entrar en cómo lo hace.
Permitir el acceso o modificación de estos datos Ventajas de la abstracción:
únicamente a través de métodos específicos.} Simplificación: Reduce la complejidad para el usuario final.
Flexibilidad: Permite cambiar los detalles internos sin
Ventajas del encapsulamiento: afectar a los usuarios del objeto o sistema.
Seguridad: Protege los datos sensibles de modificaciones Facilita la colaboración: Los desarrolladores pueden
no controladas o accidentales. trabajar en diferentes niveles de abstracción sin interferir.
Modularidad: Facilita el mantenimiento del código, ya que
cada objeto maneja su propio estado interno.
Reutilización: Componentes encapsulados pueden usarse
en diferentes contextos sin riesgo de interferencias.
EJEMPLOS
CON ENCAPSULACIÓN (ORGANIZADO
Y CON CONTROL DE DATOS)
SIN ENCAPSULACIÓN #include <stdio.h>
(DESORGANIZADO Y SIN CONTROL DE
DATOS) typedef struct {
int edad;
} Persona;
#include <stdio.h>

void setEdad(Persona *p, int edad) {


typedef struct {
if (edad > 0) p->edad = edad;
int edad;
else p->edad = 0; // Control de datos inválidos
} Persona;
}
int main() {
void mostrarEdad(const Persona *p) {
Persona p;
printf("Edad: %d\n", p->edad);
p.edad = -5; // ¡Valor incorrecto sin
}
validación!
printf("Edad: %d\n", p.edad);
int main() {
return 0;
Persona p;
}
setEdad(&p, -5); // Intento de asignar un valor inválido
mostrarEdad(&p); // Edad: 0 (valor corregido)
return 0;
}
EJEMPLOS
CÓDIGO QUE VE EL USUARIO
(INTERFAZ PÚBLICA - FIGURA.H)
SIN ABSTRACCIÓN (EL USUARIO DEL
CÓDIGO NECESITA CONOCER LOS -ESTE ARCHIVO DEFINE LAS FUNCIONES
DETALLES INTERNOS) DISPONIBLES, PERO NO SU
IMPLEMENTACIÓN.-
#include <stdio.h>
#include <math.h> #ifndef FIGURA_H
#define FIGURA_H
typedef struct {
double radio; typedef struct Circulo Circulo; // Se declara pero no se
} Circulo; muestra su estructura

double calcularArea(Circulo *c) { // Funciones que el usuario puede usar


return M_PI * c->radio * c->radio; Circulo *crearCirculo(double radio);
} double calcularArea(Circulo *c);

int main() { #endif


Circulo c;
c.radio = 5;
printf("Área del círculo: %.2f\n", calcularArea(&c));
return 0;
}
CÓDIGO INTERNO (IMPLEMENTACIÓN OCULTA -
FIGURA.C) CÓDIGO QUE USA EL USUARIO
(MAIN.C)
-AQUÍ ESTÁ LA IMPLEMENTACIÓN DE LAS
FUNCIONES. EL USUARIO NO NECESITA VERLA.- -EL USUARIO SOLO USA LA INTERFAZ
SIN PREOCUPARSE POR LOS DETALLES
#include "figura.h" INTERNOS.-
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
// Aquí sí mostramos cómo es Circulo, pero solo en este archivo #include "figura.h"
struct Circulo {
double radio; int main() {
}; Circulo *c = crearCirculo(5.0); // Crear un círculo
printf("Área del círculo: %.2f\n", calcularArea(c)); //
// Implementamos la función para crear un círculo Calcular su área
Circulo *crearCirculo(double radio) { return 0;
Circulo *c = (Circulo *)malloc(sizeof(Circulo)); }
c->radio = radio;
return c;
}

// Implementamos la función para calcular el área


double calcularArea(Circulo *c) {
return M_PI * c->radio * c->radio;
}
HOME ABOUT MORE

HERENCIA Y
POLIMORFISMO

HERENCIA POLIMORFISMO

Permite a una clase heredar atributos y métodos de Permite que diferentes clases implementen el mismo método de
otra, promoviendo la reutilización de código y la maneras distintas. A través de este concepto, objetos de
diferentes clases pueden ser tratados de forma uniforme, lo que
creación de jerarquías. La clase hija puede extender
facilita la flexibilidad y escalabilidad del código. El polimorfismo se
o modificar el comportamiento de la clase padre, lo logra mediante la redefinición de métodos en las subclases o el
que facilita la organización y mantenimiento del uso de interfaces comunes. Ambos conceptos, herencia y
código. polimorfismo, permiten crear programas más modulares,
reutilizables y fáciles de mantener.
#include <stdio.h>
#include <string.h>
HOME ABOUT MORE
// Estructura base
typedef struct {
char sabor[20];
char tamaño[20]; EJEMPLOS
} Pastel;

void hacer_pastel(Pastel* p) {
printf("Haciendo pastel de %s, tamaño %s.\n", p->sabor, p->tamaño); #include <stdio.h>
}
// Estructura base con puntero a función
// Subclase typedef struct {
typedef struct { void (*hacer)(void*);
Pastel base; } Pastel;
char decoracion[30];
} PastelDeChocolate; void hacer_pastel_fresa(void* p) { printf("Haciendo
pastel de fresa.\n"); }
void decorar_pastel(PastelDeChocolate* p) { void hacer_pastel_choco(void* p) { printf("Haciendo
printf("Decorando con %s.\n", p->decoracion); pastel de chocolate.\n"); }
}
int main() {
int main() { Pastel fresa = {hacer_pastel_fresa};
PastelDeChocolate p = {{"chocolate", "grande"}, "crema"}; Pastel choco = {hacer_pastel_choco};
hacer_pastel(&p.base); fresa.hacer(&fresa);
decorar_pastel(&p); choco.hacer(&choco);
return 0; return 0;
} }

Herencia Polimorfismo
HOME ABOUT MORE

THANK YOU

También podría gustarte