Puertas abiertas y cerradas: ¿cuál es mejor para tu hogar?

En la programación orientada a objetos, las entidades de software de los principios abiertos «(clases, módulos, funciones, etc.) deben estar abiertas para la extensión, pero cerradas para la modificación»; [1]
Es decir, tal entidad puede permitir que su comportamiento se extienda sin modificar su código fuente.

El nombre de nombre abierto se ha utilizado de dos maneras. Ambas maneras usan generalizaciones (por ejemplo, herencia o funciones de delegado) para resolver el dilema aparente, pero los objetivos, técnicas y resultados son diferentes.

El principio abierto es uno de los cinco principios sólidos del diseño orientado a objetos.

  • Se dirá que un módulo está abierto si todavía está disponible para la extensión. Por ejemplo, debería ser posible agregar campos a las estructuras de datos que contiene, o nuevos elementos al conjunto de funciones que realiza.
  • Se dirá que un módulo está cerrado si [IT] está disponible para su uso por otros módulos. Esto supone que el módulo se le ha dado una descripción bien definida y estable (la interfaz en el sentido de la información de la información).

En el momento en que Meyer estaba escribiendo, agregando campos o funciones a una biblioteca inevitablemente requeridas cambios en cualquier programa dependiendo de esa biblioteca. [Cita necesaria] La solución propuesta de Meyer a este dilema se basó en la noción de herencia orientada a objetos (específicamente la herencia de implementación): [1]: 229

Una clase está cerrada, ya que puede ser compilada, almacenada en una biblioteca, basada en base y utilizada por clases de clientes. Pero también está abierto, ya que cualquier clase nueva puede usarlo como padre, agregando nuevas funciones. Cuando se define una clase descendiente, no hay necesidad de cambiar el original o perturbar a sus clientes.

¿Qué son las abiertas y cerradas?

Dado un conjunto, decimos que es un elemento de si es uno de los objetos distintos en, y
Escribimos para denotar esto.

Dados dos conjuntos y decimos que es un subconjunto de si cada elemento de es también un
Elemento de escribir para denotar esto.

Con estas ideas en mente, ahora discutimos tipos especiales de subconjuntos.

Damos estas definiciones en general, porque cuando uno está trabajando ya que realmente son
No tan diferente para definir en que en.

Una bola abierta en Centrado con radio es el conjunto de todos los puntos de tal manera que el
distancia entre y es menor que.

  • Un punto es un punto interior de si existe una bola abierta.

Intuitivamente, es un punto interior de si podemos exprimir una bola abierta completa
centrado en adentro.

  • Un punto es un punto interior de si existe una bola abierta.
  • Un punto es un punto límite de si todas las bolas abiertas centradas en contienen ambos
    puntos en y puntos no adentro.
  • El límite de es el conjunto que consiste en todos los puntos límite de
    .
  • Ahora podemos generalizar la noción de intervalos abiertos y cerrados desde el abierto y
    Conjuntos cerrados en.

    • Un punto es un punto interior de si existe una bola abierta.
  • Un punto es un punto límite de si todas las bolas abiertas centradas en contienen ambos
    puntos en y puntos no adentro.
  • El límite de es el conjunto que consiste en todos los puntos límite de
    .
  • Un conjunto está abierto si cada punto es un punto interior.
  • Un conjunto está cerrado si contiene todos sus puntos límite.
  • El conjunto no se abre ni está abierto.
  • El conjunto no se abre ni está abierto.
  • El conjunto no se abre ni está abierto.
  • Un conjunto está limitado si hay una bola abierta de tal manera que
  • Intuitivamente, esto significa que podemos encerrar todo el conjunto dentro de un gran
    Suficiente pelota centrada en el origen.

    ¿Qué es abierta y cerrada?

    En los idiomas que admiten la recursión abierta, los métodos de objetos pueden llamar a otros métodos en el mismo objeto (incluido ellos mismos), generalmente utilizando una variable especial o una palabra clave llamada esto o yo. Esta variable está atrasada; Permite que un método definido en una clase invoque otro método que se define más adelante, en alguna subclase del mismo.

    Simula (1967) generalmente se acepta como el primer idioma con las características principales de un idioma orientado a objetos. Fue creado para hacer programas de simulación, en los que lo que se llamó objetos era la representación de información más importante. Smalltalk (1972 a 1980) es otro ejemplo temprano, y el que se desarrolló gran parte de la teoría de la OOP. Con respecto al grado de orientación de objetos, se pueden hacer las siguientes distinciones:

    • Idiomas llamados idiomas «puros» OO, porque todo en ellos se trata constantemente como un objeto, desde primitivas como personajes y puntuación, hasta clases enteras, prototipos, bloques, módulos, etc. Fueron diseñados específicamente para facilitar, incluso aplicar, oo métodos. Ejemplos: Ruby, Scala, Smalltalk, Eiffel, Emerald, [22] Jade, Self, Raku.

    Los mensajes que fluyen entre las computadoras para solicitar servicios en un entorno de cliente cliente se pueden diseñar como linealizaciones de objetos definidos por objetos de clase conocidos tanto por el cliente como del servidor. Por ejemplo, un objeto linealizado simple consistiría en un campo de longitud, un punto de código que identifica la clase y un valor de datos. Un ejemplo más complejo sería un comando que consiste en la longitud y el punto de código del comando y los valores que consisten en objetos linealizados que representan los parámetros del comando. El servidor debe dirigir cada uno de estos comando a un objeto cuya clase (o superclase) reconoce el comando y puede proporcionar el servicio solicitado. Los clientes y los servidores se modelan mejor como estructuras complejas orientadas a objetos. La arquitectura de gestión de datos distribuida (DDM) adoptó este enfoque y usó objetos de clase para definir objetos en cuatro niveles de una jerarquía formal:

    • Idiomas llamados idiomas «puros» OO, porque todo en ellos se trata constantemente como un objeto, desde primitivas como personajes y puntuación, hasta clases enteras, prototipos, bloques, módulos, etc. Fueron diseñados específicamente para facilitar, incluso aplicar, oo métodos. Ejemplos: Ruby, Scala, Smalltalk, Eiffel, Emerald, [22] Jade, Self, Raku.
  • Campos que definen los valores de datos que forman mensajes, como su longitud, punto de código y valores de datos.
  • Objetos y colecciones de objetos similares a lo que se encontraría en un programa SmallTalk para mensajes y parámetros.
  • Gerentes similares a IBM IObjects, como un directorio a archivos y archivos que consisten en metadatos y registros. Los gerentes proporcionan conceptualmente recursos de memoria y procesamiento para sus objetos contenidos.
  • Un cliente o servidor que consta de todos los gerentes necesarios para implementar un entorno de procesamiento completo, que respalda aspectos tales como servicios de directorio, seguridad y control de concurrencia.
  • Los desafíos del diseño orientado a objetos son abordados por varios enfoques. El más común se conoce como los patrones de diseño codificados por Gamma et al .. Más ampliamente, el término «patrones de diseño» puede usarse para referirse a cualquier patrón de solución general, repetible y a un problema común en el diseño de software. Algunos de estos problemas que ocurren comúnmente tienen implicaciones y soluciones particulares para el desarrollo orientado a objetos.

    Artículos Relacionados:

    Más posts relacionados:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *