Los fundamentos de la Programación Orientada a Objetos

Antes de empezar...

Sigue esta rápida referencia para la instalación y creación de proyectos en Visual Studio.Net

Guía rápida para instalara .Net y crear proyectos en versiones actuales de .NET…

Después de esta lección, usted podrá:

  • Conocer el origen y evolución de la POO
  • Beneficios

Breve historia de la programación

 

Primera generación : 1GL, lenguajes de máquina (bajo nivel)

Caracterizados por la escritura directa de unos y ceros (dígitos, bits).
Y este lenguaje es el único entendible por las máquinas computacionales

En la década de los cuarenta cuando nacían las primeras computadoras digitales el lenguaje que se utilizaba para programar era el LENGUAJE DE MÁQUINA que traducía directamente el código máquina (código binario) comprensible para
las computadoras.  Se simplificó el proceso de programación desarrollando sistemas de notación en los cuales las instrucciones se representaban en formatos nemónicos (nemotécnicos) en vez de en formatos numéricos que eran más difíciles de recordar.

Por ejemplo, la instrucción MOVE, pasaba el contenido del registro 4 al registro 8
en lenguaje máquina es:
4048 o bien 0010 0000 0010 1000

en código nemotécnico sería:
MOV R5, R6  ¹

La siguiente tabla muestra las instrucciones en binario para el control de una máquina: ² 

Segunda generación : 2GL, ensamblados

 Los ensambladores son programas que TRADUCEN otros programas escritos en
código nemotécnico en instrucciones numéricas en lenguaje máquina que son compatibles y legibles por la máquina.
Estos programas de traducción se llaman ensambladores porque su tarea es ensamblar las instrucciones reales de la máquina con los nemotécnicos e identificadores que representan las instrucciones escritas en ensamblador. ¹

El lenguaje ensamblador permite convertir las instrucciones nemotécnicas a binarios.
Ester sería un ejemplo de lenguaje ensamblador:
10110000 01100001 (binario)
Convertido a ensamblador:
mov A1, # 061h

Tercera y cuarta generación : 3,4 GL, Alto nivel

Instrucciones en lenguaje humano, esto es, comprensibles y legibles en determinado idioma global.
Fortran, Cobol, Pascal, C. C++, etc., son ejemplos de este tipo de lenguajes.
Pero, ¿y cómo traducir lenguaje natural a máquina? Se crearon los compiladores.

Por ejemplo, las siguientes instrucciones son legibles para cualquier persona:

Observe que se puede comprender qué tipo de solución está brindando el conjunto de instrucciones anteriores, escritas en pseudocódigo (lo veremos más adelante).

Ahora mire este ejemplo de un lenguaje de alto nivel (C#):

Sin conocimientos de programación, usted puede entender dicha lógica fácilmente.
La instrucción Console.WriteLine, es propia de ese lenguaje, y le indica a la máquina que muestre por pantalla (consola del sistema operativo), el mensaje que aparece encerrado en comillas dobles.

Quinta generación : 5GL, Alto nivel

Actualmente se desarrollan lenguajes basados en Inteligencia Artificial, Redes neuronales, desarrollados inicalmente por proyectos japoneses (1981) para intentar hacer que las máquinas interactúe de modo similiar entre los seres humanos.

Existen actualmente muchos proyectos orientados a dotar con IA, artefactos, aviones, autos, etc. Google, Amazon, Microsoft, Apple, Facebook y Tesla, son entre otras, organizaciones dedicadas a dichos proyectos.

Origen de la POO

Los conceptos de la POO tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard, del Centro de Cómputo Noruego en Oslo. […]  La idea surgió al agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus “propios” datos y comportamientos. Fueron refinados más tarde en Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar “sobre la marcha” (en tiempo de ejecución) en lugar de tener un sistema basado en programas estáticos. 3

Para los años 80’s, se convirtió en el estilo de la programación más dominante. A diferencia de la programación estructurada, que maneja todo a través de procedimientos o funciones. En la POO, se crean objetos a partir de plantillas que permiten el envío de mensajes para solicitar una tarea. Son altamente acoplables y reusables gracias a una de sus características cardinal, la herencia.

Actualmente hay más de 40 lenguajes de programación orientados a objetos.

Beneficios

Existen muchas ventajas al usar la POO en el diseño de nuestro software. Entre otras, destacamos las siguientes:

  • Modularidad: Aunque la modularidad es un concepto anterior a la POO, esta se centra en Bibliotecas de Clases, permitiendo crear grandes módulos especializados en tareas.
  • Reusabilidad: Todas las Bibliotecas de Clases, pueden ser heredadas, lo que ofrece una reusabilidad amplia en cualquier sección de nuestros programas y en programas externos, con simplemente exportar las clases que necesitemos, algo así, como el uso que damos a las bibliotecas de clase de las cabeceras de nuestros programas en C# (Namespace)
  • Mantenimiento: Debido a que existe mayor modularidad e independencia, se pueden modificar tareas o métodos especializados de cualquier clase dentro del modelo, independientemente del resto de flujo de secuencia de código. Por supuesto, las Interfaces juegan un papel primordial y se deberá tomar en cuenta dicho mantenimiento por la repercusión en las clases que dependen de estas interfaces.

Ahora conoce los principios cardinales o características que regulan la POO

Fuentes:
  1. Joyanes Aguilar, fundamentos de programación, 4ta edición
  2. https://conogasi.org/articulos
  3.  wikipedia.org

No olvides pulsar en el botón "He completado este material", cada vez que finalices tus lecciones...