Activida #9

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 12

Actividad #9

Materia: Lenguajes de Programación y Lab

Instructor: Jose Antonio Juarez Covarrubias

Alumno: Francisco Alan Sarmiento Méndez

Matricula: 1946128

C.D. UNIVERSITARIA FECHA: 19/10/2024/


Introducción a los lenguajes orientados a objetos
Los lenguajes de programación orientados a objetos
(OOP por sus siglas en inglés) constituyen uno de los
paradigmas más influyentes y utilizados en la actualidad.
En un mundo cada vez más digitalizado, donde los
sistemas informáticos deben gestionar estructuras de
datos complejas y grandes volúmenes de información,
este paradigma se presenta como una solución eficaz.
Los lenguajes OOP, como Java, C++, Python, y C#, entre
otros, permiten la creación de programas que son más
fáciles de mantener, reutilizar y escalar.El paradigma
orientado a objetos está basado en el concepto de
"objetos", los cuales encapsulan datos y comportamientos
en una unidad coherente. Esto contrasta con los
paradigmas previos, como la programación estructurada,
en los cuales los datos y las funciones se gestionan de
manera separada. Los lenguajes orientados a objetos
facilitan la representación de objetos del mundo real, lo
que mejora la capacidad de los desarrolladores para
modelar problemas de forma más intuitiva y efectiva.El
concepto de la orientación a objetos tiene sus raíces en la
década de 1960 con el lenguaje Simula, desarrollado por
Ole-Johan Dahl y Kristen Nygaard en Noruega. Simula fue
diseñado para crear simulaciones de sistemas dinámicos
complejos, y fue el primer lenguaje en introducir el
concepto de "clase" y "objeto". Posteriormente, en la
década de 1980, el lenguaje Smalltalk, creado por Alan
Kay y su equipo en Xerox PARC, consolidó el paradigma
orientado a objetos como una herramienta clave en la
programación moderna.
Definición, características, variables y manejo de
datos de un lenguaje orientado a objetos
Definición de un lenguaje orientado a objetos
Un lenguaje orientado a objetos se define como un
lenguaje de programación que permite estructurar el
código mediante la creación y manipulación de objetos.
Estos objetos son instancias de clases, que a su vez son
plantillas o moldes que definen atributos (variables o
datos) y métodos (funciones o procedimientos). A
diferencia de otros paradigmas, como el funcional o el
procedimental, la POO se enfoca en dividir los problemas
complejos en pequeñas entidades autosuficientes que
interactúan entre sí. A diferencia de los lenguajes de
programación procedimentales, donde el flujo de control
está basado en la ejecución de funciones o
procedimientos, en la programación orientada a objetos el
foco se coloca en los objetos que interactúan entre sí a
través de mensajes (llamadas a métodos). Esta
organización permite que los desarrolladores puedan
modelar fácilmente conceptos o entidades complejas,
dividiéndolos en objetos con características y
comportamientos definidos.
Características principales de un lenguaje orientado a
objetos
1. Abstracción: Permite representar entidades del
mundo real mediante objetos que encapsulan sus
características relevantes, ocultando los detalles
innecesarios. Por ejemplo, en un programa que
simula un coche, solo se necesitaría saber cómo
arrancarlo, detenerlo o acelerar, sin preocuparse por
los detalles internos del motor.
2. Encapsulación: Agrupa los datos y las funciones
que operan sobre esos datos en una única entidad
llamada objeto. La encapsulación protege los datos
internos del acceso directo desde fuera del objeto,
promoviendo la seguridad y controlando cómo los
datos pueden ser modificados. Este concepto
también fomenta la ocultación de la información o
ocultamiento de los detalles de implementación.
3. Herencia: Permite que una clase (subclase o clase
hija) hereda las propiedades y métodos de otra clase
(superclase o clase padre). Este mecanismo es
esencial para la reutilización de código y la creación
de jerarquías de clases. Las subclases pueden
extender o modificar el comportamiento de las clases
padres, lo que facilita la extensibilidad del software.
4. Polimorfismo: Es la capacidad de que diferentes
clases puedan ser tratadas de la misma manera a
través de una clase base común. En otras palabras,
permite que un objeto se comporte de distintas
formas según el contexto en que se utilice.
Variables en un lenguaje orientado a objetos
En los lenguajes orientados a objetos, las variables son
un componente crucial, ya que representan el estado de
los objetos y permiten almacenar y gestionar datos. Estas
variables pueden tener diferentes tipos y roles dentro de
un programa, y su acceso y comportamiento están
definidos por su ubicación dentro de la clase o su relación
con las instancias de los objetos. En POO, las variables
son conocidas como "atributos" o "propiedades" y se
refieren a los datos que un objeto almacena. Las variables
pueden tener diferentes niveles de visibilidad, como
públicas, privadas o protegidas, lo que define cómo y
desde dónde se pueden acceder a ellas. A nivel de clase,
las variables se dividen en:
1. Variables de instancia: Son aquellas que
pertenecen a cada instancia (u objeto) de una clase.
Esto significa que cada objeto creado a partir de una
clase tendrá su propio conjunto de valores para estas
variables. Las variables de instancia almacenan el
estado individual de cada objeto.
2. Variables estáticas: También conocidas como
variables estáticas, son variables que pertenecen a la
clase en sí misma, y no a las instancias individuales.
Todas las instancias de la clase comparten una única
copia de las variables de clase.
3. Variables Locales: Son aquellas que se declaran
dentro de un método, constructor o bloque de código,
y solo son accesibles dentro de ese contexto. Estas
variables se crean cuando se invoca el método y se
destruyen cuando el método termina su ejecución.
Manejo de datos
El manejo de datos en un lenguaje orientado a objetos se
realiza mediante la interacción de los objetos a través de
sus métodos. Los datos privados o protegidos son
accesibles sólo a través de métodos definidos dentro de la
clase, lo que permite que se apliquen controles y
validaciones sobre cómo se modifican esos datos. Este
control asegura que los datos se gestionan de manera
coherente y segura, evitando la corrupción accidental de
la información.
El manejo de datos es un aspecto fundamental en la
programación orientada a objetos. Los objetos son
entidades que encapsulan tanto los datos (propiedades o
atributos) como el comportamiento (métodos o funciones)
que los manipulan. El manejo de estos datos se realiza a
través de atributos de las clases y su interacción mediante
métodos.
Encapsulación, polimorfismo, herencia
Encapsulación
La encapsulación es una de las piedras angulares de la
programación orientada a objetos. Consiste en agrupar
los datos y los métodos que operan sobre esos datos en
una sola unidad: la clase. Esto proporciona una forma de
ocultar los detalles internos de la implementación y
exponer sólo lo necesario a otras partes del programa. La
encapsulación no solo mejora la seguridad del código,
sino que también facilita su mantenimiento, ya que los
cambios en la implementación interna de una clase no
afectan a otras clases que dependen de ella.

Ventajas de la encapsulación
● Protección de datos: Los datos sensibles o
importantes pueden protegerse de cambios
accidentales o malintencionados, permitiendo que
solo métodos específicos puedan acceder o modificar
esos datos.
● Mantenimiento y modularidad: La encapsulación
permite que los desarrolladores modifiquen la
implementación interna de una clase sin afectar el
resto del sistema.
● Claridad y legibilidad: Las clases bien
encapsuladas son más fáciles de leer y entender, ya
que exponen solo lo necesario para interactuar con
otros objetos.
Ejemplo de encapsulación (en Java)

En este ejemplo, los datos nombre y edad están


encapsulados dentro de la clase Persona y solo se
puede acceder a ellos mediante los métodos get y set,
proporcionando control sobre cómo se manipulan esos
datos.
Polimorfismo
El polimorfismo permite que los objetos de diferentes
clases se comporten de maneras específicas según su
tipo, incluso cuando son tratados de manera uniforme a
través de una clase base o interfaz común. Esto aumenta
la flexibilidad del código y reduce la necesidad de escribir
varias implementaciones de una función para diferentes
tipos de objetos.
Tipos de polimorfismo
1. Polimorfismo en tiempo de compilación
(Sobrecarga): Permite que dos o más métodos
dentro de una clase tengan el mismo nombre pero
diferentes firmas (parámetros). Esto es útil cuando se
requiere que una función realice una tarea similar con
diferentes tipos o cantidades de parámetros.
2. Polimorfismo en tiempo de ejecución
(Sobreescritura): Ocurre cuando una subclase
proporciona una implementación específica de un
método que ya está definido en su clase base. Esto
permite que una subclase modifique o extienda el
comportamiento de un método heredado sin cambiar
su firma.
Ejemplo de polimorfismo (en Java)

En este ejemplo, el método hacerSonido es sobrescrito


por las clases Perro y Gato, lo que permite que el mismo
método funcione de manera diferente según el tipo de
objeto que lo invoque.
Herencia
La herencia es un mecanismo que permite a una clase
derivar de otra, adquiriendo así sus atributos y métodos.
Esto fomenta la reutilización del código y permite
organizar las clases en jerarquías que modelan relaciones
del mundo real. En la OOP, la clase que hereda se
denomina "subclase" o "clase hija", mientras que la clase
de la que se hereda se denomina "superclase" o "clase
base".
Ventajas de la herencia
● Reutilización del código: Una subclase puede
reutilizar el código de la superclase sin necesidad de
reescribir.
● Extensibilidad: Las subclases pueden añadir nuevas
funcionalidades o modificar las existentes sin alterar
la superclase.
● Jerarquización: Facilita la organización lógica de las
clases en una estructura jerárquica, haciendo que el
sistema sea más comprensible y manejable.
Ejemplo de herencia (en Java)

En este ejemplo, la clase Coche hereda de la clase


Vehiculo, lo que le permite utilizar el método encender
sin necesidad de redefinirlo. Además, Coche agrega su
propio método encenderRadio, demostrando cómo la
herencia permite tanto la reutilización de código como la
extensión de funcionalidad.

También podría gustarte