Prog3 Proyecto de Investigacion

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 18

Proyecto de Programación III

(FGI-207)

Investigación Facilitador: Joan M. Gregorio Pérez

UAPA
Tema: Programacion Orientada a Objetos
Universidad Abierta Para Adultos

Educación Superior A Distancia Virtual

ASIGNATURA:
Programación 3 (FGI-207)

CARRERA:
Ingeniería En Software

TEMA:
Proyecto de Investigación

PARTICIPANTE:
Jan Michael Pérez Feliz

MATRICULA:
100059326

FACILITADOR:
Joan Gregorio Pérez

FECHA:
10/07/2024

Santiago de los caballeros, R.D


Mandato

Este curso Programación III tiene como trabajo final elaborar un análisis crítico e
investigativo escogiendo unos de los temas presentados a continuación:

En este caso escogí el siguiente tema:

Paradigma de Programación Orientada a Objetos:

 Investiga los fundamentos del paradigma de programación orientada a objetos,


destacando conceptos clave como encapsulación, herencia y polimorfismo.

 Examina cómo la programación orientada a objetos facilita la creación de


software modular, reutilizable y fácil de entender al organizar el código en
objetos con comportamientos y propiedades específicos.

 Proporciona ejemplos concretos de cómo se aplican estos conceptos en el


desarrollo de software utilizando lenguajes de programación que admiten la
programación orientada a objetos, como Java, Python o C++.
Fases del proyecto.

La estructura del reporte será el siguiente: (5 Puntos).

Portada: Título y datos (presentación) logo actualizado de la universidad.


Introducción: Se aborda el tema central y se menciona el objetivo del trabajo.
Desarrollo: Análisis reflexivo y crítico.

Conclusiones: Resultados importantes, recomendaciones. Referencias


bibliográficas: Formato APA

Anexos: Las que consideres de interés.

Nota: explicar el proyecto en un máximo de 10 páginas (incluyendo presentación,


introducción, conclusión y recomendaciones).

Criterios de evaluación:
 -Originalidad
 -No copy paste
 -Ortografía
 -Creatividad
 -Cumplimiento
 - El tipo de letra: color automático Arial 12 o Times New Roman 12
 - Espacio interlineal es de 1.5
 - Todo el texto debe ser justificado.
 - Utilizar el uso de las negritas o cursiva, solo si va a resaltar algunas
palabras claves y citar algún autor

Final (presentación y defensa). Video donde defiendes la investigación realizada 5


(puntos)
Informe de lectura con la plantilla colgada en la plataforma. (5 Puntos)
Introducción

La Programación Orientada a Objetos (POO) es un paradigma de programación que


organiza el software en objetos que contienen tanto datos como métodos para
manipular esos datos.

Este enfoque surge como una evolución de la programación estructurada y busca


mejorar la modularidad, reutilización y mantenibilidad del código. Los conceptos
clave de la POO incluyen encapsulación, herencia y polimorfismo, los cuales
permiten construir sistemas complejos y adaptables a cambios.

La POO se ha convertido en un estándar en la industria del software debido a sus


múltiples beneficios. Permite a los desarrolladores pensar en términos de objetos
del mundo real, lo que facilita la modelación y comprensión de sistemas complejos.
Además, promueve la reutilización de código a través de la herencia y la creación de
componentes modulares, lo que reduce el tiempo de desarrollo y los costos de
mantenimiento.

Este trabajo tiene como objetivo explorar los fundamentos de la POO, destacar sus
ventajas en el desarrollo de software y proporcionar ejemplos concretos de su
aplicación en lenguajes como Java, Python y C++.

A lo largo de este proyecto, se profundizará en los conceptos fundamentales de la


POO, se analizarán sus ventajas y se mostrarán ejemplos prácticos de cómo estos
conceptos se implementan en los lenguajes de programación más populares. Se
espera que al final de este trabajo, el lector tenga una comprensión clara de por qué
la POO es tan ampliamente adoptada y cómo puede aplicarla en sus propios
proyectos de desarrollo de software.
Desarrollo
1. Fundamentos del Paradigma de Programación Orientada a Objetos

 Encapsulación:

 Definición: La encapsulación es el proceso de ocultar los detalles


internos de un objeto y exponer solo lo necesario a través de métodos
públicos. Este principio asegura que los datos de un objeto no puedan
ser modificados directamente, sino solo a través de métodos definidos.

 Beneficios: Mejora la seguridad del código al restringir el acceso a los


datos internos y facilita la mantenibilidad al permitir cambios en la
implementación interna sin afectar a otros objetos que interactúan con él.

 Ejemplo en Java:

public class Persona {


private String nombre;

public String getNombre() {


return nombre;
}

public void setNombre(String nombre) {


this.nombre = nombre;
}
}

Explicación: En este ejemplo, la variable nombre está encapsulada dentro de la


clase Persona. Sólo puede ser accedida y modificada a través de los métodos
getNombre y setNombre, protegiendo así la integridad de los datos.
Herencia:

 Definición: La herencia permite que una nueva clase (subclase) adquiera las
propiedades y comportamientos de otra clase (superclase). Este mecanismo
promueve la reutilización del código y la creación de jerarquías de clases.

 Beneficios: Facilita la extensión y modificación del comportamiento de las


clases sin necesidad de modificar el código existente. Promueve la
reutilización y reduce la redundancia.

 Ejemplo en Python:

class Animal:
def __init__(self, nombre):
self.nombre = nombre

def sonido(self):
pass

class Perro(Animal):
def sonido(self):
print("Guau Guau")

mi_perro = Perro("Fido")
mi_perro.sonido() # Output: Guau Guau

Explicación: La clase Perro hereda de la clase Animal. Esto significa que Perro
tiene todas las propiedades y métodos de Animal, y además puede definir sus
propios métodos, como sonido.
Polimorfismo:

 Definición: El polimorfismo permite que los objetos de diferentes clases sean


tratados como objetos de una clase común. Se manifiesta principalmente a
través de la sobrecarga de métodos (polimorfismo en tiempo de compilación)
y la sobrescritura de métodos (polimorfismo en tiempo de ejecución).

 Beneficios: Facilita la extensión y modificación del código, permitiendo que


los objetos sean tratados de manera uniforme y genérica.

 Ejemplo en C++:

class Forma {
public:
virtual void dibujar() {
cout << "Dibujar forma" << endl;
}
};
class Circulo : public Forma {
public:
void dibujar() override {
cout << "Dibujar círculo" << endl;
}
};
Forma* forma = new Circulo();
forma->dibujar(); // Output: Dibujar círculo

Explicación: En este ejemplo, el método dibujar es definido en la clase base Forma


y sobrescrito en la clase derivada Circulo. El objeto forma puede apuntar a cualquier
objeto que derive de Forma, y el método correcto se llama en tiempo de ejecución.
Ventajas de la POO en el Desarrollo de Software

Modularidad:

 Definición: La POO permite dividir el código en módulos independientes,


cada uno representado por objetos que encapsulan datos y comportamientos
específicos. Esto facilita la gestión y el mantenimiento del software.

 Ejemplo: En una aplicación de gestión de bibliotecas, se pueden tener clases


separadas para Libro, Usuario y Prestamo, cada una con sus propios
métodos y datos.
 Beneficios: Mejora la claridad del código, facilita la colaboración entre
equipos y permite la implementación de cambios sin afectar otras partes del
sistema.
 Explicación: La modularidad permite dividir un sistema complejo en partes
más manejables y comprensibles. Cada módulo puede ser desarrollado y
probado de manera independiente.

Reutilización de Código:

 Definición: La POO permite la creación de clases y objetos reutilizables, lo


que reduce el esfuerzo de desarrollo y minimiza errores. Las clases base
pueden ser extendidas por subclases que añaden o modifican
funcionalidades.

 Ejemplo: Clases base como Animal pueden ser reutilizadas en subclases


específicas como Perro y Gato, permitiendo añadir comportamientos
específicos a cada una.
 Beneficios: Reduce la duplicación de código, mejora la consistencia y facilita
el mantenimiento del software.
 Explicación: La reutilización de código permite aprovechar componentes
previamente desarrollados, ahorrando tiempo y esfuerzo en el desarrollo de
nuevas funcionalidades.
Facilidad de Comprensión y Mantenimiento:

 Definición: La estructura clara y lógica del código en POO facilita la lectura,


comprensión y mantenimiento. Los objetos y sus interacciones son intuitivos
y reflejan entidades del mundo real.

 Ejemplo: En un sistema de ventas, objetos como Producto, Cliente y Pedido


son fáciles de entender y gestionar.
 Beneficios: Facilita la incorporación de nuevos desarrolladores al proyecto y
permite una rápida identificación y resolución de problemas.
 Explicación: La claridad y la lógica del código hacen que sea más fácil de
leer y comprender, lo que reduce el tiempo necesario para solucionar
problemas y realizar mejoras.

Aplicación de Conceptos en Lenguajes de Programación

-Java:

 Encapsulación:

public class Persona {

private String nombre;

public String getNombre() {

return nombre;

public void setNombre(String nombre) {

this.nombre = nombre;
}

 Herencia:

public class Animal {


public void sonido() {
System.out.println("El animal hace un sonido");
}
}

public class Perro extends Animal {


public void sonido() {
System.out.println("El perro ladra");
}
}

 Polimorfismo:

Animal miAnimal = new Perro();


miAnimal.sonido(); // Output: El perro ladra

-Python:

 Encapsulación:

class Persona:

def __init__(self, nombre):

self.__nombre = nombre

def get_nombre(self):

return self.__nombre
def set_nombre(self, nombre):

self.__nombre = nombre

 Herencia:

class Animal:
def __init__(self, nombre):
self.nombre = nombre

def sonido(self):
pass

class Perro(Animal):
def sonido(self):
print("Guau Guau")

 Polimorfismo:

mi_animal = Perro("Fido")
mi_animal.sonido() # Output: Guau Guau

-C++:

 Encapsulación:

class Persona {
private:
string nombre;
public:
string getNombre() {
return nombre;
}
void setNombre(string nombre) {
this->nombre = nombre;
}
};

 Herencia:

class Animal {
public:
virtual void sonido() {
 Polimorfismo:

Animal* miAnimal = new Perro();


miAnimal->sonido(); // Output: El perro ladra

Recomendaciones

Para maximizar los beneficios de la POO, se recomienda:

 Adoptar prácticas de diseño orientadas a objetos desde el inicio del


desarrollo.

 Utilizar diagramas UML para planificar y visualizar la estructura de clases y


relaciones.

 Aprovechar los principios de la POO para construir sistemas escalables y


mantenibles.

 Promover el uso de patrones de diseño orientados a objetos para resolver


problemas comunes de diseño.

Video explicando/defendiendo mi investigación:

https://drive.google.com/file/d/1OssKFXsj2vcw5WFP6Ts01aMPvZ7Rv-xw/
view?usp=sharing
Informe de lectura

Solo colocare lo del informe en si ya que este reporte tiene las siguientes
informaciones:

Referencia del artículo: Khalil Stemmler, PW Skills, University of California,


Stackify

Nombre de los autores:

 Khalil Stemmler
 PW Skills
 University of California
 Stackify

Nombre del artículo:

 4 Principles of Object-Oriented Programming


 OOP Principles: 4 Principles Of Object Oriented Programming
 Inheritance, Encapsulation and Polymorphism
 What Are OOP Concepts in Java? 4 Primary Concepts

Libro ___ Revista ___ Internet X Otro ___

Editorial Ciudad Fecha Núm. Pág.:

 khalilstemmler.com
 pwskills.com
 pythonnumericalmethods.berkeley.edu
 stackify.com

Tema del artículo:

La Programación Orientada a Objetos (POO) y sus fundamentos: encapsulación,


herencia y polimorfismo.

¿Cuánto tiempo (en minutos) le dedicó a la lectura del artículo?: 15 minutos

Palabras Claves:
 Programación Orientada a Objetos
 Encapsulación
 Herencia
 Polimorfismo
 Modularidad

Ideas claves (mínimo 5 sustentadas):

1. Encapsulación: Proceso de ocultar los detalles internos de un objeto,


exponiendo solo lo necesario. Mejora la seguridad y la mantenibilidad del
código.
2. Herencia: Permite que una clase derive de otra, reutilizando y extendiendo
funcionalidades. Facilita la creación de jerarquías de clases.
3. Polimorfismo: Capacidad de tratar objetos de diferentes clases como si
fueran de una clase común. Mejora la flexibilidad y reutilización del código.
4. Modularidad: División del software en módulos independientes. Facilita la
gestión, prueba y depuración del código.
5. Reutilización del Código: Uso de clases y objetos reutilizables para reducir
el esfuerzo de desarrollo y minimizar errores.

Representación gráfica de los conceptos más importantes del artículo (Máximo 8


conceptos)

Mapa Conceptual:

POO Conceptos

El polimorfismo es la La modularidad se
La encapsulación es el
capacidad de un refiere a la división del
principio de ocultar los La herencia es un objeto de tomar software en módulos o
detalles internos de un mecanismo que muchas formas. En componentes
objeto y exponer solo lo permite crear una POO, permite que una independientes, cada
necesario a través de nueva clase a partir de interfaz común sea uno con una
métodos públicos. Esto una existente, utilizada para funcionalidad
mejora la seguridad del heredando sus diferentes tipos de específica.
código y facilita su atributos y métodos. objetos, facilitando el
mantenimiento.
manejo de estos de
manera uniforme.

La reutilización de código es
el principio de utilizar
componentes de software
Aspectos del artículo que más le llamaron la atención:

 La claridad con la que se explican los conceptos fundamentales de la POO.


 Los ejemplos concretos de implementación en diferentes lenguajes de
programación.
 La demostración práctica de cómo la POO mejora la modularidad y
mantenibilidad del software.

Aspectos en los que le interesaría seguir profundizando:

 Aplicación de patrones de diseño en la POO.


 Comparación de la POO con otros paradigmas de programación, como la
programación funcional.
 Mejores prácticas para la implementación de POO en proyectos a gran
escala.

¿Cuánto tiempo (en minutos) le dedicó al análisis del artículo?: 23 minutos

Referencias bibliográficas:

1. Stemmler, K. (n.d.). 4 Principles of Object-Oriented Programming. Khalil


Stemmler. Retrieved from khalilstemmler.com
2. PWSkills. (n.d.). OOP Principles: 4 Principles Of Object Oriented
Programming. Retrieved from pwskills.com
3. University of California. (n.d.). Inheritance, Encapsulation and Polymorphism.
Retrieved from berkeley.edu
4. Stackify. (n.d.). What Are OOP Concepts in Java? 4 Primary Concepts.
Retrieved from stackify.com

Esto concluye el informe de la lectura del reporte, utilizando la plantilla


que nos dejó en la plataforma profe y espero que sea de su agrado.
Conclusión

La Programación Orientada a Objetos (POO) representa un paradigma


esencial en el desarrollo moderno de software, brindando múltiples ventajas
que facilitan la creación de aplicaciones robustas, modulares y mantenibles. A
lo largo de este trabajo, hemos explorado los fundamentos de la POO,
destacando conceptos clave como la encapsulación, la herencia y el
polimorfismo. Cada uno de estos conceptos aporta características únicas
que, cuando se combinan, permiten a los desarrolladores escribir código más
organizado, reutilizable y fácil de mantener.

Además de estos fundamentos, hemos examinado cómo la POO facilita la


creación de software modular, reutilizable y fácil de entender. La modularidad
permite dividir el software en componentes manejables, la reutilización de
código mejora la eficiencia del desarrollo, y la claridad del diseño orientado a
objetos facilita tanto la comprensión como el mantenimiento del software.

Los ejemplos concretos en lenguajes de programación como Java, Python y


C++ han demostrado cómo estos conceptos pueden ser aplicados de manera
práctica. Desde la encapsulación de datos en Java hasta la implementación
de herencia en Python y el uso del polimorfismo en C++, hemos visto cómo la
POO se integra en diferentes entornos de desarrollo para mejorar la calidad y
la eficiencia del software.

En conclusión, la Programación Orientada a Objetos es una herramienta


poderosa que, cuando se utiliza correctamente, puede transformar la manera
en que se desarrolla y mantiene el software. La comprensión y aplicación de
sus principios fundamentales no solo mejoran la calidad del código, sino que
también facilitan la adaptación y evolución del software en respuesta a las
necesidades cambiantes. Se recomienda a los desarrolladores profundizar en
estos conceptos y aplicar las mejores prácticas de POO en sus proyectos
para maximizar sus beneficios.
Referencias Bibliográficas

 Stemmler, K. (n.d.). 4 Principles of Object-Oriented Programming. Khalil


Stemmler. Retrieved from khalilstemmler.com

 PWSkills. (n.d.). OOP Principles: 4 Principles Of Object Oriented


Programming. Retrieved from pwskills.com

 University of California. (n.d.). Inheritance, Encapsulation and Polymorphism.


Retrieved from berkeley.edu

 Stackify. (n.d.). What Are OOP Concepts in Java? 4 Primary Concepts.


Retrieved from stackify.com

También podría gustarte