Programación orientada a objetos

La programación orientada a objetos (POO) es una forma de escribir programas informáticos que utiliza la idea de "objetos" para representar datos y métodos. Normalmente, los programas informáticos eran sólo una lista de instrucciones para el ordenador, que le decían que hiciera ciertas cosas de una manera determinada, lo que se llama programación procedimental. Sin embargo, en la programación orientada a objetos, los programas informáticos utilizan objetos que hablan entre sí y cambian los datos de esos objetos, para trabajar de la manera que el usuario desea. Además, debido a la forma en que está diseñada la programación orientada a objetos, ayuda al desarrollador al permitir que el código sea fácilmente reutilizado por otras partes del programa o incluso por otras personas.

La mayoría de los lenguajes de programación son una mezcla de diferentes tipos de formas de escribir programas informáticos. Por ejemplo, Python permite escribir programas de ordenador tanto en programación orientada a objetos como en programación procedimental. Hay muchos lenguajes de programación que permiten escribir programas de ordenador en OOP, Algunos de estos lenguajes de programación son, por ejemplo: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, etc.

Características

La idea principal de la programación orientada a objetos es que todo es un objeto. Sin embargo, el objeto puede ser de diferentes tipos:

  • Las variables pueden contener información (o datos) de diferentes tipos soportados por el lenguaje de programación. Algunos ejemplos son el tipo de datos entero y la estructura de datos de las listas. Las variables es una idea que ya está disponible en los lenguajes de programación procedimental. En la programación orientada a objetos, las variables se conocen principalmente como atributos.
  • Los procedimientos (también conocidos como funciones, métodos o rutinas) son una lista de instrucciones que indican al ordenador que debe tomar datos de entrada, hacer algunos cálculos o cambiar datos, y devolver el resultado al usuario. Los procedimientos son también una idea que ya está disponible en los lenguajes de programación procedimental. En la programación orientada a objetos, los procedimientos se conocen principalmente como métodos.
  • Las clases son una colección de diferentes variables y procedimientos. Las clases suelen hablar entre sí para realizar cambios en los datos con el fin de trabajar de la manera que el usuario desea.

Los objetos son un término utilizado para referirse a las instancias de las clases.

Ejemplos

En los ejemplos siguientes, creamos una clase llamada Humano. Esta clase contiene los atributos name (para el nombre de la persona) y friend (para el nombre del amigo). Cada uno de los métodos de la clase Human contiene una lista de instrucciones que hace uso de los atributos name y friend.

Python

Este código está en Python.

class Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("Mi nombre es "+self. name) def say_goodnight(self): if self. friend is None: print("Buenas noches nadie.") else: print("Buenas noches "+self. friend. name) # Crea un nuevo objeto Humano llamado stephen con nombre "Stephen" stephen = Humano("Stephen") # Crea un nuevo objeto Humano llamado joe con nombre "Joe" y stephen como amigo joe = Humano("Joe", stephen) stephen. say_name() # Muestra 'Mi nombre es Stephen' stephen. say_goodnight() # Muestra 'Buenas noches a nadie' joe. say_name() # Muestra 'Mi nombre es Joe' joe. say_goodnight() # Muestra 'Buenas noches Stephen'

Java

Este código está en Java.

La clase humana

class Human { private String name = "unnamed"; // el nombre de este Humano private Human friend = null; // el amigo del Humano // Este método crea un nuevo objeto Humano cuando se le da el nombre y el amigo public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // Este método también crea un nuevo objeto Humano cuando sólo se le da el nombre public Human(String name) { this. name = name; this. friend = null; }      // Este método crea un nuevo objeto Humano cuando no se le da ni el nombre ni el amigo public Human() { this. name = "sin nombre"; this. friend = null; } public void sayName() { System. out. println("Mi nombre es " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Buenas noches a nadie."); } else { System. out. println("Buenas noches " + friend. name); }     } }

Un método para hablar con la clase humana anterior

class Main { public static void main(String[] args) { // Crea un nuevo objeto Humano stephen con nombre "Stephen" Human stephen = new Human("Stephen"); // Crea un nuevo objeto Humano joe con nombre "Joe" y stephen como amigo Human joe = new Human("Joe", stephen); stephen. sayName(); // Muestra 'Mi nombre es Stephen' stephen. sayGoodnight(); // Muestra 'Buenas noches nadie' joe. sayName(); // Muestra 'Mi nombre es Joe' joe. sayGoodnight(); // Muestra 'Buenas noches Stephen' } }

Crítica

Aunque la programación orientada a objetos es popular, hay mucha gente que piensa que es mala y la critica.

  • Luca Cardelli escribió un artículo titulado "Bad Engineering Properties of Object-Oriented Languages".
  • Richard Stallman escribió en 1995: "Añadir la POO a Emacs no es claramente una mejora; yo utilicé la POO cuando trabajaba en los sistemas de ventanas de Lisp Machine, y no estoy de acuerdo con la opinión habitual de que es una forma superior de programar".
  • Un estudio de Potok et al. nos dice que hay muy poca diferencia de productividad entre los enfoques OOP y procedimentales.
  • Christopher J. Date dijo que comparar la POO con otras cosas, especialmente cómo se relacionan la POO y la otra cosa, es difícil porque la gente no está de acuerdo con el significado de la POO.
  • Alexander Stepanov sugirió que la POO da un punto de vista limitado en cuanto a las matemáticas, y la calificó de "casi tan engañosa como la Inteligencia Artificial"
  • Paul Graham, un exitoso vendedor y programador de Internet, ha sugerido que el propósito de la programación orientada a objetos es actuar como un mecanismo de pastoreo que evita que los programadores promedio en organizaciones promedio "hagan demasiado daño". Esto también frena a los programadores más rápidos y mejores que saben cómo hacer las cosas de una manera más potente y compacta... [1]

Preguntas y respuestas

P: ¿Qué es la programación orientada a objetos?


R: La programación orientada a objetos es una forma de escribir programas informáticos utilizando "objetos" para representar datos y métodos.

P: ¿En qué se diferencia la programación orientada a objetos de la programación procedimental?


R: En la programación procedimental, los programas informáticos son una lista de instrucciones para el ordenador, que le dicen que haga ciertas cosas de una manera determinada. En la programación orientada a objetos, los programas informáticos utilizan objetos que hablan entre sí para cambiar los datos de esos objetos y funcionar de la forma que desee el usuario.

P: ¿Cómo beneficia la programación orientada a objetos a los desarrolladores?


R: La programación orientada a objetos permite reutilizar fácilmente el código en otras partes del programa o incluso por otras personas.

P: ¿Por qué es conocido el lenguaje de programación Python?


R: Python permite escribir programas informáticos tanto en programación orientada a objetos como en programación procedimental.

P: ¿Puede dar ejemplos de lenguajes de programación que permitan escribir programas informáticos en programación orientada a objetos?


R: Entre los lenguajes de programación que permiten escribir programas informáticos en programación orientada a objetos se encuentran C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C#, etc.

P: ¿Qué son los objetos en la programación orientada a objetos?


R: Los objetos son entidades en la programación orientada a objetos que contienen datos y métodos.

P: ¿Cómo funcionan los objetos en la programación orientada a objetos?


R: Los objetos interactúan entre sí para cambiar los datos de esos objetos y funcionar de la forma que desee el usuario.

AlegsaOnline.com - 2020 / 2023 - License CC3