¿Cómo explicarías la POO a un niño de 5 años o una abuela de 90 años?

Creo que el principal problema con OOP para un no programador (que probablemente son el niño de 5 años y la abuela) es ver el punto .

Es bastante fácil cuando has escrito algunos programas para entender las otras respuestas: agrupar cosas, funcionalidad y datos, sí, eso tiene sentido, parece más limpio.

¿Pero por qué? Si nunca ha programado, probablemente tenga una idea muy limitada de cómo funciona una computadora. Dile que haga algo, lo hace. Dile que haga muchas cosas, tienes un programa.

Así que creo que puedes encontrar mejores analogías. OOP se trata de objetos, pero se trata principalmente de las relaciones entre esos objetos, de las interacciones y de cómo las usa para crear una organización compleja. Así que piensa en lo que haces todos los días. Te despiertas, vas a comprar pan y jugo de naranja (tal vez con tus padres, si realmente tienes 5 años). ¿Necesita siempre pedirle al tendero que hornee el pan y exprima las naranjas? ¿Para cosechar el trigo y las naranjas?

No, no preguntas, no sabes lo que hacen y no te importa. Lo único importante es que les preguntaste algo y ellos respondieron . Esos son los “métodos”. Algunos son públicos y usted puede interactuar con ellos (el panadero puede vender el pan, vender el jugo de naranja). Otros son solo para el panadero (amasar la masa), y no te importan. Entonces el panadero es un objeto. Tú también eres uno, y también tienes algunos métodos, como “comprar el pan”, etc.

Hay muchas cosas más, ya que los objetos pueden estar compuestos de otros, o ser de una variedad diferente (tanto usted como el panadero son humanos, ambos pueden “caminar”). Pero la idea es esta: reducir un problema complejo a un conjunto de bloques que interactúan entre sí, sin necesidad de conocer toda la organización para resolver sus propios problemas personales.

Hay muchas cosas que debemos recordar, como cumpleaños y puntajes de juegos. A eso lo llamamos “datos”.

Luego hay cosas que debemos hacer con esa información, como averiguar quién es el próximo cumpleaños o quién tiene el puntaje más alto. A eso lo llamamos “funciones”.

Es una buena idea mantener juntos los datos y funciones relacionados, ¿no?

Usted, un niño de 5 años junto con los miembros de su familia; vive en una casa, la casa es una ‘clase’, cada miembro tiene trabajos particulares que hacer; los trabajos son ‘métodos’, su departamento / edificio es un ‘paquete’ que tiene muchas casas (clases).

Todos ustedes, miembros de su casa, son ‘variables’ que viven seguras en su casa, los extraños no pueden verlo / llamarlo directamente; Eso es encapsulación.

Si hay alguna queja sobre usted de la escuela, el director llama a su padre porque el padre tiene una relación parental con usted; Eso es herencia.

si el niño tiene que recibir alguna carta de su escuela, el cartero llama a la puerta; entrega el sobre a la madre, el cartero no necesita encontrarse / ver al niño; esa es ‘Abstracción’ donde la madre juega el papel de una ‘Interfaz o clase abstracta’. El sobre te llega a través de tu madre.

Usted, un niño, su nombre es Akshay, que es un hijo en casa, estudiante en la escuela, jugador en el suelo; en todas partes se te llamará con el mismo nombre “Akshay”, pero se te llama a realizar diferentes tareas en esos diferentes lugares, eso es lo que llamas ‘Polimorfismo’.

¡Espero eso ayude!

Tenemos un perro y un gato. Ambos son animales. Un animal es un tipo de cosa único: un modelo de objeto.

Estas son mascotas, que son diferentes de los animales salvajes, pero ambas conservan muchos atributos de los “animales”. Por lo tanto, las mascotas y los “animales salvajes” son extensiones de los animales.

Cat and Dog pueden ser extensiones de Pet. Todavía tienen atributos de Animal y Mascota, pero son diferentes entre sí. Ambos tienen cola, pero uno se mueve mientras el otro se mueve.

Pero sus métodos: cómo hacen las cosas pueden ser muy diferentes. Si le dices al perro que vas a caminar, saltará y moverá la cola. Si le dices al gato que vas a caminar, pondrá los ojos en blanco y encontrará otro lugar para estar.

Entonces … Cuando estoy programando algo, como un personaje del juego, trato de descubrir los tipos más básicos de Objetos. Una vez que tengo eso, es mucho más fácil hacer objetos que son extensiones con sus propios atributos y métodos. Cuando escribo un comando, no tengo que decirle cómo hacer todo, solo las partes únicas. Como Objetos, sus atributos y métodos heredados me ayudarán a hacer lo que quiero.

Basta de charla, estas son las vacaciones. ¡Comamos una galleta!