No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Programación orientada a objetos

8/21
Recursos

La programación orientada a objetos (POO) se basa en el concepto de objeto. Un objeto es una abstracción de una entidad que posee datos en forma de propiedades o atributos, y procedimientos en forma de métodos. Por ejemplo, si vemos a un humano como un objeto, un humano tiene propiedades como su altura o color de cabello, así como métodos como leer, escribir, comer, etc.

El primer lenguaje orientado a objetos fue Simula. Otros lenguajes orientados a objetos son C++, C#, PHP, Ruby, Python, etc.

Conceptos principales de la POO

Ya hablamos del concepto de objeto. Ahora introducimos otros conceptos fundamentales dentro de la programación orientada a objetos.

Clases

Una clase es un molde o fábrica de objetos. En una clase se definen las propiedades y métodos que pueden tener un objeto. Se dice que un objeto es una instancia de una clase. Cuando se crea un objeto a partir de una clase, se definen los valores de las propiedades del objeto.

Propiedades

Las propiedades son características que distinguen un tipo de objeto de otro, pero que varían entre objetos. Por ejemplo, los objetos de tipo humano pueden tener distintos colores de cabello, pero la propiedad “color de cabello” es una que existe en todos los humanos (en los calvos esta propiedad valdría null).

Métodos

Los métodos son acciones o procedimientos que puede llevar a cabo un objeto. Por ejemplo, si un profesor fuera un objeto, un método del profesor sería “dar clase”.

Pilares de la POO

La programación orientada a objetos se fundamenta en 4 pilares. Es importante entender estos pilares, ya que la POO es el paradigma más utilizado dentro del desarrollo de software.

Abstracción

La abstracción se refiere a aislar las características de un objeto. Se trata de conceptualizar objetos y cuáles son sus características

Herencia

La herencia permite que una clase herede propiedades y métodos de otra clase. Por ejemplo, la clase “perro” hereda de la clase “animal”. En este caso diríamos que la clase “perro” es hija de la clase “animal”.

Encapsulamiento

El encapsulamiento ayuda a aislar parte del código de una instancia. Esto permite 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

El 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.

Ventajas y desventajas de la POO

Como cualquier paradigma de programación, la POO presenta varios pros y contras.

Ventajas

  • Código reutilizable.
  • Reducción de redundancia.
  • Fácil de mantener.
  • Seguridad (mediante métodos, propiedades y clases privadas/protegidas).

Desventajas

  • Tamaño (cuando una clase es muy general y tiene muchas clases hijas)
  • Esfuerzo (por la especificidad que requieren)
  • Velocidad del desarrollo (por el esfuerzo)

Conclusión

La programación orientada a objetos es el paradigma más utilizado gracias a que permite reutilizar el código de una manera segura y fácil. Es fundamental entender los conceptos y pilares de la programación orientada a objetos.

Contribución creada por: Ciro Villafraz con los aportes de Aaron Quiroga.

Aportes 60

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

¿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)

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

Soy fan de su explicación con Legos

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.

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.

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.
.

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)

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)

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/

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

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.

Me espanto, la clase la vi hace semana y media y después la volví a ver y me apareció esto, si me C4G3.

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.

en una conferencia el mismo ALAN KAY dijo:
“LA VERDADERA PROGRAMACION ORIENTADA A OBJETOS NO EXISTE, NUNCA HA EXISTIDO, AUN ES TEORICA Y AUN NO LA HE DESSARROLLADO, LO QUE USTEDES LLAMAN P.O.O. PROGRAMACION ORIENTADA A OBJETOS ES OTRA COSA”

FUERTES DECLARACIONES!!!

el video de la conferencia esta en youtube…busquenlo.

No se ha corregido esta clase, objeto y clases están invertidos.

cuando hablan de POO, clase, instancia, encapsulamiento y polimorfismo, me acuerdo del canal de youtube "pildoras informáticas" de allí aprendi esos conceptos. xD

La Programación Orientada a Objetos (POO) es un paradigma de programación que se basa en la creación y manipulación de objetos para resolver problemas. A continuación se presentan los conceptos principales de la POO:

  • Clase: es la plantilla o molde que define las propiedades y métodos comunes a un conjunto de objetos. Las clases son la base para la creación de objetos.

  • Objeto: es una instancia concreta de una clase. Cada objeto tiene sus propias propiedades y puede realizar acciones definidas por la clase.

  • Atributo: son las características o propiedades que definen a un objeto. Cada atributo tiene un tipo de dato y un valor.

  • Método: son las funciones o acciones que puede realizar un objeto. Cada método tiene un nombre, parámetros y un valor de retorno.

  • Herencia: es un mecanismo que permite que una clase herede las propiedades y métodos de otra clase. La clase que hereda se llama subclase y la clase de la que se heredan las propiedades se llama superclase.

  • Polimorfismo: es la capacidad de un objeto de ser tratado como otro objeto distinto, pero que pertenece a la misma jerarquía de clases.

  • Encapsulamiento: es un mecanismo que permite ocultar la implementación interna de un objeto y sólo exponer una interfaz pública para interactuar con él.

  • Clases

Las clases son plantillas que se utilizan para crear objetos con características y funcionalidades específicas.

class Coche {
  constructor(marca, modelo, color) {
    this.marca = marca;
    this.modelo = modelo;
    this.color = color;
  }

  arrancar() {
    console.log(`El coche ${this.marca} ${this.modelo} ha arrancado`);
  }

  parar() {
    console.log(`El coche ${this.marca} ${this.modelo} se ha detenido`);
  }
}

En este ejemplo, hemos creado la clase Coche con tres propiedades (marca, modelo y color) y dos métodos (arrancar y parar).
.

  • Objetos
    Los objetos son instancias de una clase, es decir, son elementos creados a partir de una plantilla (clase) que tienen sus propias propiedades y métodos.
const miCoche = new Coche('Ford', 'Mustang', 'Rojo');

console.log(miCoche.marca); // 'Ford'
console.log(miCoche.modelo); // 'Mustang'
console.log(miCoche.color); // 'Rojo'

miCoche.arrancar(); // 'El coche Ford Mustang ha arrancado'
miCoche.parar(); // 'El coche Ford Mustang se ha detenido'

En este ejemplo, hemos creado un objeto miCoche a partir de la clase Coche. Hemos asignado los valores ‘Ford’, ‘Mustang’ y ‘Rojo’ a las propiedades marca, modelo y color respectivamente. También hemos llamado a los métodos arrancar y parar utilizando la instancia de la clase miCoche.
.

  • Propiedades
    .
    Las propiedades son las características de un objeto que lo hacen único. En el ejemplo anterior, las propiedades de miCoche son marca, modelo y color.
console.log(miCoche.marca); // 'Ford'
console.log(miCoche.modelo); // 'Mustang'
console.log(miCoche.color); // 'Rojo'

En este ejemplo, estamos accediendo a las propiedades de miCoche mediante la notación de punto (.). Esto nos permite obtener el valor de cada propiedad.
.

  • Métodos
    .
    Los métodos son las funciones que están asociadas con un objeto y que nos permiten realizar acciones con ese objeto. En el ejemplo de la clase Coche, los métodos son arrancar y parar.
miCoche.arrancar(); // 'El coche Ford Mustang ha arrancado'
miCoche.parar(); // 'El coche Ford Mustang se ha detenido'

En este ejemplo, estamos llamando a los métodos de miCoche utilizando la notación de punto (.). Esto nos permite ejecutar la función asociada con el objeto.

Me espantó horrible la tipa que salió a dar la aclaración jajaja

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.

En resumen:

La programación orientada a objetos se basa en el concepto de crear un modelo del problema de destino en sus programas. La programación orientada a objetos disminuye los errores y promociona la reutilización del código. Python (que es mi lenguaje favorito 😁) es un lenguaje orientado a objetos.

Excelente clase!

Apareció la corregidora de Platzi 😃

Ya lo vi más abajo, pero creo que es importante destacar y tener muy en cuenta que se invirtieron los conceptos clase y objeto. La clase es el molde del cual se fabrican los objetos, y son los objetos a los que se le llama instancia. La clase es el humano, el objeto es una persona específica. Las características o atributos del humano están definidas en la clase, pero es en el objeto en donde se le dan los valores que describen a cada persona en particular

aquí un pequeño ejemplo de lo que es una clase, un objeto, atributo y método 😄

Excelentes ejemplos!

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.

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.

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.

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

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…

Sin duda alguna la programación orientada a objetos es mi paradigma favorito!.

PARADIGMA DE PROGRAMACIÓN ORIENTADA A OBJETOS
.
La programación por procedimientos resolvió muchos problemas de la programación imperativa.
.
Cuando existen programas con cientos de procedimientos a los cuales se debe hacer una llamada , se ejecutan las lianas de código, sale del procedimiento e ingresa a uno nuevo. Así sucesivamente hasta completar el objetivo del programa. Lo que lo hace muy complejo.
.
Hoy en día las aplicación WEB y móviles tiene múltiples botones de acción que el usuario al interactuar con ellos van a ejecutar código. Esto a través de programación por procedimientos seria sumamente complejo si se depende de un procedimiento principal.
.
En este contexto surge la programación orientada a objetos
.
Contiene datos y código
.
Datos en forma de campos. (atributos o propiedades)
Código en forma de procedimientos. (métodos)
.
Se origina a final de los años 50s cuando se hablaba de objetos en el MIT, siendo citados después por Alan Kay.
.
“Pensé en los objetos como células biológicas y/o computadoras individuales en una red, capaces de comunicarse con mensajes.”

Las slides estaban geniales!!!

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

### 1. Abstracción La abstracción es como crear un modelo básico de algo, concentrándote solo en lo importante para el problema que estás tratando de resolver, ignorando los detalles menos importantes. **Ejemplo:** Imagina que estás programando una aplicación para una biblioteca. Un libro en esta aplicación puede tener muchos detalles como título, autor, y número de páginas. La abstracción sería crear una clase "Libro" que incluya solo estas características esenciales. pythonCopy code`class Libro`: ` def __init__(self, titulo, autor, paginas`): ` self.titulo = titulo` ` self.autor = autor` ` self.paginas = paginas` ### 2. Encapsulamiento Encapsulamiento significa mantener algunos componentes de un objeto ocultos del exterior, de modo que solo se pueda interactuar con esos componentes a través de métodos específicos de la clase. **Ejemplo:** Continuando con el ejemplo del libro, no queremos que alguien cambie el número de páginas de un libro directamente, así que lo ocultamos y usamos métodos para acceder o modificar esa información. pythonCopy code`class Libro`: ` def __init__(self, titulo, autor, paginas`): ` self.titulo = titulo` ` self.autor = autor` ` self._paginas = paginas # Se usa un guion bajo para indicar que es un atributo protegido` ` def set_paginas(self, paginas`): ` if paginas > 0`: ` self._paginas = paginas` ` def get_paginas(self`): ` return` `self._paginas` ### 3. Herencia La herencia permite crear una nueva clase basada en una clase existente. La nueva clase hereda características y comportamientos de la clase original. **Ejemplo:** Supongamos que además de libros, la biblioteca también tiene revistas. Las revistas son similares a los libros pero también tienen una frecuencia de publicación. pythonCopy code`class Revista(Libro): # Hereda de Libro` ` def __init__(self, titulo, autor, paginas, frecuencia`): ` super().__init__(titulo, autor, paginas)` ` self.frecuencia = frecuencia` ### 4. Polimorfismo Polimorfismo es la capacidad de utilizar un método en diferentes formas para diferentes objetos. **Ejemplo:** Si tanto los libros como las revistas pueden ser prestados, pero el proceso de préstamo es diferente, puedes definir un método general `prestar()` que actúe de manera diferente según el objeto. pythonCopy code`class Libro`: ` # código previo` ` def prestar(self`): ` print("Prestar libro por 30 días."`) `class Revista(Libro`): ` # código previo` ` def prestar(self`): ` print("Prestar revista por 7 días.")`

En el molde va una funcion llamada constructor en la cual van a dar cierto atributos que tendran los objetos creados con ese molde, para no tener que crearlos cada vez, por ejemplo en una clase carro que tine una marca, un color, un tipo. Entoces cuando se van creando cada uno de los objetos se le pasa estas propiedades lo que faclita su programacion, sobretodo si tenemos que crear muchos objetos osea muchos carros

Programación orientada a objetos

.
La programación orientada a objetos contiene dos elementos fundamentales, datos y código, los datos son campos o secciones de información como atributos o propiedades. El código por otra parte son los métodos que se pueden aplicar a estos datos. Simula fue el primer lenguaje orientado a objetos.
.
Gracias a este lenguaje hoy en día se siguen utilizando en muchas ocasiones los conceptos que este lenguaje introdujo, estos conceptos son pilares fundamentales a la hora de construir un codigo con el paradigma de la programación orientada a objetos.
.

  • Clases: Una clase es el molde o el lugar donde se crean los objetos, en la clase se definen las propiedades o métodos que tendrá el objeto, algunas personas incluso pueden concluir que un objeto es una instancia o entorno aislado de una clase.
  • Objeto/Instancia: Una instancia es el espacio que se hereda de una clase y que se diferencia de los demás por tener datos únicos.
  • Propiedades: Son las características que identifican a cada uno de los objetos, comparten los mismos atributos, pero no las mismas propiedades.
  • Métodos: Son acciones específicas que pueden realizar.
    .

Pilares de la programación orientada a objetos

.

  • Herencia: Permite que de una clase o instancia se pueda tener otra clase o instancia hija que pueda heredar atributos de la misma, llegando a tener un comportamiento distinto si se quiere.
  • Encapsulamiento: Ayuda a aislar u ocultar parte del código de una instancia o una clase, esto con el objetivo de que cuando sea llamada no altere su estado por error.
  • Abstracción: Es aislar las características de un objeto o instancia.
  • Polimorfismo: El polimorfismo dicta que cada instancia debe tratar de manera distinta los mensajes o llamados a diferencia de otros objetos o instancias.
    .

Ventajas de la programación orientada a objetos

.

  • Código reutilizable
  • Reducción de redundancia
  • Fácil de mantener ya que hacemos mantenimiento a un objeto o clase más fácilmente
  • Mayor grado de seguridad
    .

Desventajas de la programación orientada a objetos

.

  • Tamaño
  • Esfuerzo
  • Velocidad
    .
    Algunos lenguajes famosos que utilizan esto es PHP, Ruby, Python.

Es interesante de vez en cuando el conocimiento de POO. Sabia de como se emplean pero no la forma de pensarlo antes de ejecutar tu codigo. Es algo bueno porque la verdad quisiera aprender de estos con python.

Ventajas de la Programación Orientada a Objetos

Pilares de la Programación Orientada a Objetos

Origen de la Programación Orientada a Objetos

Un saludo a todas las instancias que están por aquí estudiando

Si un objeto es muy general entonces no esta correctamente abstraido.

Me encanta como describe las caracterisiticas de la POO con las figuras de lego, proque siempre los he entendio de esta forma.

  • Las clases son los moldes de los legos.

  • Los objetos son los ladrillos de los legos.

  • Abstracción es como cada ladrillo tiene sus propias caractersiticas.

  • La herencia es como los ladrillos comparten caractersiticas similares.

  • Encapsulamiento es como los ladrillos estan separados de modo que no siempre encajan de la misma manera con otro bloque especial.

  • Y el polimorfimso de los ladrillos pueden construirse para hacer diversas figuras.

Paradigma orientado a objetos o POO

Orgien en Simula 6. Para hacer simulaciones. Creado por Ole Johan Dahl y Kristen Nygaard. Smalltalk desarrollado en Simula que a su vez es una versión escrita sobre Basic.

Caracteristicas de la POO

  • Abstracción Denota las caracteristicas escenciales de un objeto, donde se captura su comportamiento. Cada objeto en el sistema sirve como un modelo de un agente abtracto que puede realizar trabajo, informar, cambiar su estilo y comunicarsecon otros objetos. Los procesos, funciones y metodos tambien pueden ser abtraidos.

  • Encapsulamiento Reunir todos los eleetos que se concideren pertenecientes a una misma entidad, con el mismo nivel de abtracción.

  • Principio de ocultación Cada onjeto esta aislado del exterior. Cada objeto expone una interfaz a otro objetos, que especifica como pueden interactuar con otros objetos. El aislamiento protege las propiedades de un objeto contra modificación de quien no tenga contra la modificación de quien no tenga derecho a acceder a ellas. Solamente los propios metodos intenros del objeto pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado internos de un objeto de manera inesperada.

  • Polimorfismo Comportamiento diferentes, asociados a objetos diferentes pueden compartir el mismo nombre. De esta forma reutiliza el comportamiento correspondiente al objeto que se esta usando.

  • Herencia Las clase se relacionan entre si. Formando una jerarquía de casificación. Los objetos heredan propiedades y comportamiento de todas las clases a las que pertenecen.
    La herencia organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes.
    Esto puede compartir (y extender) su comportamiento sin tener que volver a implementarlo.
    Esto suele hacerse habitualmente agrupnando los objetos en clases y estas en arboles que reflejan el comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay “Herencia multiple”.

En cuestión de conceptos un objeto no es un molde, un objeto 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”

Me gustó mucho su ejemplo de que un método suyo es ser profesor de platzi, al menos yo ya los entiendo pero para alguien que no sabe de estas cosas ese ejemplo fue perfecto. excelentes clases profe.

Chicos, si es que tal vez no llegaron a entenderlo del todo (como es mi caso) pueden revisar estos 2 videos:
1.https://www.youtube.com/watch?v=DlphYPc_HKk
2.https://youtu.be/Mi_sRAfs7TE
Espero les ayude a comprender!

Vayas ventajas de POO:
Código reutilizable.
Reducción de redundancia.
Fácil de mantener.
Seguridad

me recordó al chavo del 8 ese nombre de simula xd perdón pero nunca se me va a olvidar cual fue uno de los primeros en usar poo

En este texto entenderemos un poco lo que es la programación orientada a objetos, este tipo de programación tiene como pilares 4 conceptos:

  • Herencia
  • Polimorfismo
  • Abstracción
  • Encapsulamiento
    Estos 4 pilares es lo que nos permiten pensar en un objeto programable.
    Por ejemplo,
    Hablemos de programar a un profesor. ¿Qué es un profesor? Un humano que enseña temas específicos a otros humanos. Entonces, sabemos que un profesor, primero es un humano, por lo que para programar una computadora que se comporte como un profesor desde el paradigma orientado a objetos, hay que crear una clase Humano. Aquí entramos en el concepto de clase, pensemos en esto como el molde de los objetos que se crearán a lo largo de nuestro programa. Entonces, ¿qué es un humano?, es una pregunta bastante grande y podríamos decir que bastante compleja de responder, pero para la finalidad de este texto, pensemos que el humano es un animal que come, respira, se reproduce, piensa, se comunica, se mueve e interactúa con el mundo a través de estos métodos mencionados y aparte tiene otros métodos. Utilicemos los métodos de comunicación y movimiento para nuestra clase humano. La clase humano tendrá dos métodos principales, comunicarse y moverse en el espacio. Entonces, si pensamos en lo que hace un profesor, hace lo mismo que la clase humano, pero tiene otros métodos que fungen como filtros para la información que llegará a los métodos del humano, pero los comparte, es decir los hereda. Entonces, pensamos en un profesor como un objeto que hereda las características del humano (en este caso, nuestro humano que más bien parece un NPC, tiene la capacidad de comunicarse y de moverse en el espacio). Entonces, nuestro profesor tendrá otros métodos, por ejemplo, estructurar un tema, definir una guía para el tema, y para cada punto de esa guía tendrá un mensaje; por ponerlo de forma simple, entonces, el profesor primero estructura el tema, hace la guía y por último de la herencia de la clase humano, comunica el mensaje que quiere dar para cada punto de la guía. Lo que hicimos arriba, fue también parte del concepto de abstracción, pensemos en esto como una forma de reducir a conceptos individuales un objeto complejo. Por otro lado, el encapsulamiento es la forma en la que nosotros ocultamos ciertas características o métodos para que sólo sean accesibles, desde la clase, por ejemplo, volvamos a la clase humano. Pero agreguemos el método respiración, nosotros queremos que la respiración siempre suceda, porque si no sucede, nuestro humano, muere, entonces ninguna clase que herede la clase humano, ni ninguna parte de nuestro programa queremos que acceda para modificar la respiración del humano, porque esto lo pondría en riesgo. Por ultimo el polimorfismo, es lo que nos permite crear instancias de nuestra clase, y enviarles información que sintácticamente es igual, y esta nos responderá de manera diferente. Y esto si lo pensamos con los humanos, tendríamos un método que se llame procesamiento de mensajes, este método dado que todos los humanos tenemos una forma diferente de pensar, de ver las cosas y de vivir, aunque recibamos el mismo mensaje, responderíamos diferente. Claro que esto sería infinitamente complejo de programar, sin embargo, funciona para la explicación del concepto.
    Espero que les haya servido, o gustado este texto, si tienes algún comentario al respecto, en el que consideres que puedes aportar, por favor hazlo, para que yo y otros estudiantes podamos mejorar.

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.

Dejo videito

Muy bueno.