Diseño orientado a objetos comenzó desde el momento en que se inventaron las computadoras. La programación estaba ahí y los enfoques de programación entraron en escena. Programar consiste básicamente en dar ciertas instrucciones a la computadora.
Al comienzo de la era de la informática, la programación generalmente se limitaba a la programación en lenguaje de máquina. Lenguaje de máquina significa aquellos conjuntos de instrucciones que son específicas de una máquina o procesador en particular, que tienen la forma de 0 y 1. Estas son secuencias de bits (0100110…). Pero es bastante difícil escribir un programa o desarrollar software en lenguaje de máquina.
En realidad, es imposible desarrollar software utilizado en los escenarios actuales con secuencias de bits. Esta fue la razón principal por la que los programadores pasaron a la próxima generación de lenguajes de programación, desarrollando lenguajes ensambladores, que estaban lo suficientemente cerca del idioma inglés como para entenderlos fácilmente. Estos lenguajes ensambladores se utilizaron en microprocesadores. Con la invención del microprocesador, los lenguajes ensambladores florecieron y dominaron la industria, pero no fue suficiente. Nuevamente, a los programadores se les ocurrió algo nuevo, es decir, programación estructurada y procedimental.

Programación estructurada -
El principio básico del enfoque de programación estructurada es dividir un programa en funciones y módulos. El uso de módulos y funciones hace que el programa sea más comprensible y legible. Ayuda a escribir código más limpio y a mantener el control sobre las funciones y módulos. Este enfoque da importancia a las funciones más que a los datos. Se centra en el desarrollo de grandes aplicaciones de software; por ejemplo, se utilizó C para el desarrollo de sistemas operativos modernos. Los lenguajes de programación PASCAL (introducido por Niklaus Wirth) y C (introducido por Dennis Ritchie) siguen este enfoque.
Enfoque de programación procesal –
Este enfoque también se conoce como enfoque de arriba hacia abajo. En este enfoque, un programa se divide en funciones que realizan tareas específicas. Este enfoque se utiliza principalmente para aplicaciones de tamaño mediano. Los datos son globales y todas las funciones pueden acceder a datos globales. El inconveniente básico del enfoque de programación procedimental es que los datos no están seguros porque son globales y cualquier función puede acceder a ellos. El flujo de control del programa se logra mediante llamadas a funciones y declaraciones goto. Los lenguajes de programación: FORTRAN (desarrollado por IBM) y COBOL (desarrollado por la Dra. Grace Murray Hopper) siguen este enfoque.
Estas construcciones de programación se desarrollaron a finales de los años 1970 y 1980. Todavía había algunos problemas con estos lenguajes, aunque cumplían con los criterios de programas, software, etc. bien estructurados. No estaban tan estructurados como los requisitos en ese momento. Parecen estar demasiado generalizados y no se correlacionan con aplicaciones en tiempo real.
Para resolver este tipo de problemas, se desarrolló como solución la POO, un enfoque orientado a objetos.

El enfoque de programación orientada a objetos (POO) –
El concepto de programación orientada a objetos fue diseñado básicamente para superar el inconveniente de las metodologías de programación anteriores, que no estaban tan cerca de las aplicaciones del mundo real. La demanda aumentó, pero aun así se utilizaron métodos convencionales. Este nuevo enfoque trajo una revolución en el campo de la metodología de programación.
La programación orientada a objetos (POO) no es más que aquella que permite escribir programas con la ayuda de determinadas clases y objetos en tiempo real. Podemos decir que este enfoque está muy cerca del mundo real y sus aplicaciones porque el estado y el comportamiento de estas clases y objetos son casi los mismos que los de los objetos del mundo real.
Profundicemos en los conceptos generales de POO, que se detallan a continuación:
¿Qué son la clase y el objeto?
Es el concepto básico de la programación orientada a objetos; un concepto extendido de la estructura utilizada en C. Es un tipo de datos abstracto y definido por el usuario. Consta de varias variables y funciones. El propósito principal de la clase es almacenar datos e información. Los miembros de una clase definen el comportamiento de la clase. Una clase es el modelo del objeto, pero también podemos decir que la implementación de la clase es el objeto. La clase no es visible para el mundo, pero el objeto sí.
CPP
cómo emparejar auriculares beats
Class car> {> >int> car_id;> >char> colour[4];> >float> engine_no;> >double> distance;> > >void> distance_travelled();> >float> petrol_used();> >char> music_player();> >void> display();> }> |
>
>
Aquí, el coche de clase tiene propiedades car_id, color, motor_no y distancia. Se parece al automóvil del mundo real que tiene las mismas especificaciones, que pueden declararse público (visible para todos fuera de la clase), protegido y privado (visible para nadie). Además, existen algunos métodos como Distance_travelled(), petrol_used(), music_player() y display(). En el código que figura a continuación, el automóvil es una clase y c1 es un objeto del automóvil.
CPP
#include> using> namespace> std;> > class> car {> public>:> >int> car_id;> >double> distance;> > >void> distance_travelled();> > >void> display(>int> a,>int> b)> >{> >cout <<>'car id is= '> << a <<>'
distance travelled = '> << b + 5;> >}> };> > int> main()> {> >car c1;>// Declare c1 of type car> >c1.car_id = 321;> >c1.distance = 12;> >c1.display(321, 12);> > >return> 0;> }> |
alfabeto con números
>
>
Abstracción de datos -
La abstracción se refiere al acto de representar características importantes y especiales sin incluir detalles de fondo o explicación sobre esa característica. La abstracción de datos simplifica el diseño de bases de datos.

kat timpf hermana
- Nivel Físico:
Describe cómo se almacenan los registros, que a menudo están ocultos al usuario. Se puede describir con la frase bloque de almacenamiento.
Nivel lógico:
Describe los datos almacenados en la base de datos y las relaciones entre los datos. Los programadores generalmente trabajan en este nivel porque conocen las funciones necesarias para mantener las relaciones entre los datos.
Nivel de vista:
Los programas de aplicación ocultan detalles de tipos de datos e información por motivos de seguridad. Este nivel generalmente se implementa con la ayuda de una GUI y se muestran los detalles destinados al usuario.
Encapsulación –
La encapsulación es uno de los conceptos fundamentales en la programación orientada a objetos (POO). Describe la idea de empaquetar datos y los métodos que funcionan con datos dentro de una unidad, por ejemplo, una clase en Java. Este concepto se utiliza a menudo para ocultar la representación del estado interno de un objeto desde el exterior.
Herencia -
La herencia es la capacidad de una clase de heredar capacidades o propiedades de otra clase, llamada clase padre. Cuando escribimos una clase, heredamos propiedades de otras clases. Entonces, cuando creamos una clase, no necesitamos escribir todas las propiedades y funciones una y otra vez, ya que pueden heredarse de otra clase que las posea. La herencia permite al usuario reutilizar el código siempre que sea posible y reducir su redundancia.

Java
import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >System.out.println(>'GfG!'>);> > >Dog dog =>new> Dog();> >dog.name =>'Bull dog'>;> >dog.color =>'Brown'>;> >dog.bark();> >dog.run();> > >Cat cat =>new> Cat();> >cat.name =>'Rag doll'>;> >cat.pattern =>'White and slight brownish'>;> >cat.meow();> >cat.run();> > >Animal animal =>new> Animal();> > >animal.name =>'My favourite pets'>;> > >animal.run();> >}> }> > class> Animal {> >String name;> >public> void> run()> >{> > >System.out.println(>'Animal is running!'>);> >}> }> > class> Dog>extends> Animal {> > /// the class dog is the child and animal is the parent> > >String color;> >public> void> bark()> >{> >System.out.println(name +>' Wooh ! Wooh !'> >+>'I am of colour '> + color);> >}> }> > class> Cat>extends> Animal {> > >String pattern;> > >public> void> meow()> >{> >System.out.println(name +>' Meow ! Meow !'> >+>'I am of colour '> + pattern);> >}> }> |
>
>
C++
¿Qué es $home Linux?
#include> #include> using> namespace> std;> > class> Animal {> public>:> >string name;> >void> run(){> >cout<<>'Animal is running!'>< } }; class Dog : public Animal { /// the class dog is the child and animal is the parent public: string color; void bark(){ cout<' Wooh ! Wooh !' <<'I am of colour '< } }; class Cat : public Animal { public: string pattern; void meow(){ cout<' Meow ! Meow !'<<'I am of colour '< } }; int main(){ cout<<'GFG'< Dog dog; dog.name = 'Bull dog'; dog.color = 'Brown'; dog.bark(); dog.run(); Cat cat; cat.name = 'Rag doll'; cat.pattern = 'White and slight brownish'; cat.meow(); cat.run(); Animal animal; animal.name = 'My favourite pets'; animal.run(); return 0; //code contributed by Sanket Gode. }> |
>
>Producción
GfG! Bull dog Wooh ! Wooh !I am of colour Brown Animal is running! Rag doll Meow ! Meow !I am of colour White and slight brownish Animal is running! Animal is running!>
Polimorfismo –
El polimorfismo es la capacidad de los datos de procesarse en más de una forma. Permite la realización de una misma tarea de diversas formas. Consiste en sobrecargar métodos y anular métodos, es decir, escribir el método una vez y realizar varias tareas usando el mismo nombre de método.

CPP
int a cadena
#include> using> namespace> std;> > void> output(>float>);> void> output(>int>);> void> output(>int>,>float>);> > int> main()> {> >cout <<>'
GfG!
'>;> >int> a = 23;> >float> b = 2.3;> > >output(a);> >output(b);> >output(a, b);> > >return> 0;> }> > void> output(>int> var)> {>// same function name but different task> >cout <<>'Integer number: '> << var << endl;> }> > void> output(>float> var)> {>// same function name but different task> >cout <<>'Float number: '> << var << endl;> }> > void> output(>int> var1,>float> var2)> {>// same function name but different task> >cout <<>'Integer number: '> << var1;> >cout <<>' and float number:'> << var2;> }> |
>
>
Algunos puntos importantes que debe saber sobre la programación orientada a objetos:
- La programación orientada a objetos trata los datos como un elemento crítico.
- Se hace hincapié en los datos más que en el procedimiento.
- Descomposición del problema en módulos más simples.
- No permite que los datos fluyan libremente en todo el sistema, es decir, flujo de control localizado.
- Los datos están protegidos de funciones externas.
Ventajas de la programación orientada a objetos –
- Modela muy bien el mundo real.
- Con POO, los programas son fáciles de entender y mantener.
- La programación orientada a objetos ofrece reutilización del código. Las clases ya creadas se pueden reutilizar sin tener que volver a escribirlas.
- La programación orientada a objetos facilita el desarrollo rápido de programas donde es posible el desarrollo paralelo de clases.
- Con la programación orientada a objetos, los programas son más fáciles de probar, administrar y depurar.
Desventajas de la programación orientada a objetos –
- Con la programación orientada a objetos, las clases a veces tienden a generalizarse demasiado.
- Las relaciones entre clases se vuelven a veces superficiales.
- El diseño de programación orientada a objetos es complicado y requiere conocimientos adecuados. Además, es necesario realizar una planificación y un diseño adecuados para la programación orientada a objetos.
- Para programar con programación orientada a objetos, el programador necesita habilidades adecuadas como diseño, programación y pensamiento en términos de objetos y clases, etc.