POO y Programación Estructurada

Algunas distinciones entre el paradigma de la Programación Orientada a Objetos (POO).
Datos Vs. Objetos: 
  • Un dato es una representación particular de la información. Los datos sin embargo no pueden realizar funciones, ejecutar tareas o responder a eventos en tiempo real. 
  • Un objeto sí puede hacerlo, lo que permite modelar nuestros sistemas de manera más realista. Con el objeto no se separan los datos de su representación y sus funciones.
Clases vs. Tipos:
  • Encapsulamiento: Un tipo de datos apenas tiene información descriptiva, y no define cómo opera esa información. Además, el programador debe conocer el interior de la definición. En una clase, el aspecto de representación puede -y debe- quedar oculto.
  • Mantenimiento: Modificar internamente una clase no debe afectar las funcionalidades que esa clase ofrece.
Funciones vs. Métodos
  • Ámbito de aplicación: Una función se puede aplicar en cualquier elemento del tipo de datos, no se puede restringir a ciertos elementos o contextos. Las definiciones de clases permiten que los métodos se puedan definir para ciertos contextos específicos.
  • Robustez: Una función puede fallar por causas ajenas a su voluntad y puede además generar efectos colaterales que afecten el funcionamiento de otras funciones. Los métodos restringen (o deben restringir) el tipo de cosas que se pueden modificar