Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Programación orientada a objetos

8/21
Recursos

Aportes 30

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

En cuestión de conceptos un objeto no es un molde, un objecto es lo que se fabrica con el molde, el objeto es la instancia de una clase y la clase no es una instancia, la clase al ser el molde es la generadora de objetos o de instancias de si misma, la clase es una generadora de objetos, creo que quiere decir es: “la clase humano, la cual pueden surgir objetos/instancias”

Ustedes no lo saben, pero tan solo con esta clase ya aprendieron la gran mayoría de los conceptos de programación orientada a objetos y ya lo pueden aplicar a cualquier lenguaje jaja, les daría una explicación alternativa, pero este video habla por sí solo:
.

Es tan cierto que es el paradigma más usado que en Platzi hay MUCHOS cursos que lo abordan en diferentes lenguajes:

Objeto: es un molde que representa a un objeto de la vida real.
Clase/ Instancia: describe un conjunto de objetos que comparten los mismos atributos.
Propiedad/ Atributos: son las características o propiedades que describen a un objeto.
Método: son las operaciones de una clase.

¿No están invertidos los conceptos? El molde es la clase… Los objetos son las instancias… Y lo resalto porque al inicio no es tan fácil entender la abstracción la Programación Orientada a Objetos, qué es una clase, qué es una instancia, etc.

  • Clase -> Persona (molde)
    • Objeto -> Héctor (instancia)
    • Objeto -> RetaxMaster (instancia)
    • Objeto -> Cristian (instancia)

Las clases que “heredan”, igual, no son instancias, son clases que heredan de clases…

  • Clase -> Profesor hereda de Persona (molde)
    • Objeto -> Anahí (instancia)

Abstracción: aislar las características de un objeto (identificar cada una de las características). Se trata de conceptualizar objetos y cuales son sus características

Herencia: Permite que de una clase o una instancia herede características.

Encapsulamiento: ayuda aislar parte del código de una instancia o una clase, de manera que cuando sea llamada no altere su estado por accidente o por efecto colateral de los métodos o comportamientos de otros objetos con los que puede interactuar.

Polimorfismo: significa que ante los mensajes o llamados que reciba una clase o una instancia los va a interpretar de una forma distinta a como lo harían clases o instancias distintas.

Soy fan de su explicación con Legos

En el Curso Básico de Programación que dicta Freddy hay una clase práctica completa sobre POO que es excelente. Es la clase de los Pakimanes, un juego (es sobre insertar imágenes sin canvas), y el código es en JS y se ven claritos varios conceptos de POO.

Me parece fascinante cómo hay una fuerte base de inspiración en la construcción de estos lenguajes y elementos abstractos se ha dado a partir de entidades biológicas y sus sistemas.
(respecto a la analogía de los objetos como celulas biológicas de Alan Kay)

🐱‍💻 La programación orientada a objetos permite manejar objetos, organizadas mediante clases.

COBOL 2002
…A principios de 1990 se decidió añadir la orientación a objetos en la próxima revisión total de COBOL. La estimación inicial era tener esta revisión completa en 1997 y una ISO de CD (Comité de redacción) estuvo disponible en 1997. Algunos ejecutores (incluyendo Micro Focus , Fujitsu , Veryant y IBM ) presentó orientado a objetos sintaxis basada en el 1997 o los otros proyectos de la revisión completa. La final aprobado por la norma ISO (adoptado como norma ANSI por INCITS ) fue aprobado y puesto a disposición en 2002

Quick Source: https://cobolcs.wordpress.com/2012/10/02/cobol-2002-y-cobol-orientado-a-objetos/

En los últimos años ha sido bastante cuestionado este paradigma, ya sea porque estén parcializados por las bondades que ofrece la programación funcional, algunos fundamentos de sus detractores podrían decirse que son bastante razonables.
.
Comparto un post que me pareció interesante. Object-Oriented Programming is The Biggest Mistake of Computer Science. Y una ilustración que lo resume un poco.
.

Programación orientada a objetos

  • Contiene datos y código
  • El primer lenguaje fue Simula
  • Conceptos principales: clases, objetos o instancias, atributos y métodos

Pilares de la POO

  • Herencia: donde una clase puede heredar atributos o métodos de otra
  • Encapsulamiento: ayuda a aislar parte del código para que no se pueda afectar por accidente
  • Abstracción: aislar las características de un objeto (un cuerpo se compone de extremidades, torso y cabeza, a su vez la cabeza compuesta por distintas partes, etc.)
  • Polimorfismo: significa que ante un mismo evento las distintas clases generan comportamientos distintos

Pros

  • Código reutilizable
  • Reducción de redundancia
  • Fácil de mantener
  • Seguridad

Cons

  • Tamaño (cuando un objeto es muy general y tiene muchas clases hijas)
  • Esfuerzo (por la especificidad que requieren)
  • Velocidad del desarrollo (por el esfuerzo)
Creo que la POO es un gran ejemplo de cómo la programación es el resultado de una observación maravillosa al mundo y a las personas, cómo funcionamos, qué hacemos y cómo lo hacemos. Mapas que seguimos plasmados en un paradigma.

Las slides estaban geniales!!!

Pilares de la POO:

Abstración:
Aisla las características de un objeto.


Herencia:
Permite que de una clase o de una instancia se pueda tener otra clase o instancia hija que va a heredar atributos de la misma.


Encapsulamiento:
Ayuda a aislar u ocultar parte del código de una instancia o de una clase. Esto con el propósito de que cuando sea llamada no altere su estado por accidente o por efecto colateral de los métodos o comportamientos de otros objetos con los que puede intetarctuar.


Polimorfismo:
Significa que ante los mensajes o los llamados que reciba una clase o una instancia los va a interpretar de una forma distinta a como harían clases o instancias distintas.

Programación orientada a Objetos:
En definitiva una Clase es una Plantilla que define Atributos y métodos que son comunes para todos los objetos de cierto tipo y permite crear cualquier número de objeto (crear Instancia de la Clase).

Les comparto un video donde de igual forma explican la clase, pero con ejemplos diferentes, espero les sea de utilidad:

nombre: Programación Orientada a Objetos (POO): Abstracción, Encapsulamiento, Herencia, Polimorfismo

Link: https://youtu.be/SI7O81GMG2A

Programación orientada a objetos = P.O.O
*Basada en objetos -contiene datos y código-
.-Datos en forma de campo(atributos y propiedades)
.-Código en forma de procedimientos(métodos)

“Pensé los objetos cómo células biológicas y/o computadoras individuales en una red capaces de comunicarse con mensajes” .-Alan Kay

*Simula es el primer lenguaje orientado a objetos, introduciendo conceptos como -clases, -objetos, -herencia, -enlaces dinámicos.

*En la actualidad hablar de P.O.O == .-Objetos, .-Clases, .-Propiedades, .-Métodos.
*Pilares de P.O.O = Son cuatro:
.-Herencia(hace de una clase/instancia se pueda generar otra clase/instancia hija conservando propiedad y atributos)
.-Encapsulamiento(ayuda a encapsular/aislar parte del código de una instancia o una clase, con el propósito que cuando sea llamada no altere su estado por accidente con los elementos que puede interactuar)
.-Abstracción(Aislar características de un objeto)
.-Polimorfismo(Refiere que ante los llamados/mensajes que reciba una instancia los va a interpretar de forma distinta a como lo hacían clase o instancia distintias.)

*Ventajas: .-Código reutilizable, .-Reducción de redundancia, .-Fácil de mantener, .-Seguridad.
*Desventajas: .-Tamaño, .-Esfuerzo invertido
ej: Simula, Java, C++, Python, Ruby, PHP

Excelente clase!

Tengo entendido que al crear una clase se está creando más especificamente un tipo de dato, sin embargo este dato tiene metodos los cuales son el compotamiento que definimos en este tipo de dato que hemos creado.

Por ejemplo la clase humano seria el molde del dato de tipo humano que tiene atibutos como los que se mencionan en esta clase.

  • Color de cabello
  • Altura
  • Edad
  • Nombre

ETC…

Y los metodos en este caso el comportamiento seria:

  • Comer
  • Dormir
  • Caminar
  • Correr

ETC…

Pilares de la POO:

Abstración:
Aisla las características de un objeto.

Herencia:
Permite que de una clase o de una instancia se pueda tener otra clase o instancia hija que va a heredar atributos de la misma.

Encapsulamiento:
Ayuda a aislar u ocultar parte del código de una instancia o de una clase. Esto con el propósito de que cuando sea llamada no altere su estado por accidente o por efecto colateral de los métodos o comportamientos de otros objetos con los que puede intetarctuar.

Polimorfismo:
Significa que ante los mensajes o los llamados que reciba una clase o una instancia los va a interpretar de una forma distinta a como harían clases o instancias distintas.

Si quieren tener un ejemplo practico sobre este tema de clases, les recomiendo ver la clase 21 del curso gratis de programación básica que imparte Freddy, ahí van a ver como se construye una clase

La clase es la maqueta, las instancias de la clase son los objetos. Las clases efectivamente tienen métodos y atributos que le dan comportamiento y características. Los objetos por su parte le dan valores a esos atributos y ejecutan los métodos, es decir, los objetos son las entidades del mundo real (cada una), siendo el concepto más general la clase y más específico el objeto. La clase podría ser el Humano, o el Estudiante si se espera especificar con características y atributos más detallados como "código de estudiante"... un objeto sería un solo humano o un solo estudiante, que tiene un valor específico para el código de estudiante que le pertenece.

En la POO se ve la importancia de tener claro sus pilares los cuales hacen referencia a la herencia, encapsulamiento, abstracción y polimorfismo. También se debo conocer acerca de que lenguajes trabajan con POO para poder elegir bien a la hora de hacer un desarrollo.

Python también permite la programación orientada a objetos, que es un paradigma de programación en la que los datos y las operaciones que pueden realizarse con esos datos se agrupan en unidades lógicas llamadas objetos.

Excelentes ejemplos!

Esas características de programación orientada a objetos son clave conocerlas, en la mayoría de entrevistas, por no decir todas, te preguntan sobre esto.

Muy bueno.