Red de conocimiento informático - Consumibles informáticos - ¿Quién propuso por primera vez los 6 principios de diseño orientado a objetos?

¿Quién propuso por primera vez los 6 principios de diseño orientado a objetos?

En 1967, Kisten Nygaard y Ole Johan Dahl del Centro de Computación de Noruega desarrollaron el lenguaje Simula67, que proporcionó un nivel de abstracción y encapsulación más alto que las subrutinas e introdujo los conceptos de abstracción de datos y clases. Considerado el primer lenguaje orientado a objetos.

A principios de la década de 1970, el equipo de investigación de Alan Kay en el Centro de Investigación de Palo Alto desarrolló el lenguaje Smalltalk, y más tarde desarrolló Smalltalk-80, considerado el lenguaje orientado a objetos más puro. impacto en lenguajes orientados a objetos posteriores, como Objective-C, C, Self y Eiffl.

Con la aparición de los lenguajes orientados a objetos, la programación orientada a objetos surgió y se desarrolló rápidamente.

Después de eso, la orientación a objetos continuó penetrando en otras etapas. En 1980, Grady Booch propuso el concepto de diseño orientado a objetos y luego comenzó el análisis orientado a objetos.

En 1985 apareció la primera base de datos comercial orientada a objetos. Desde 1990, la investigación sobre análisis, pruebas, medición y gestión orientada a objetos ha logrado grandes avances.

Seis principios de diseño del diseño orientado a objetos:

Incluso una sola responsabilidad:

Los atributos y métodos de una clase deben tener una alta correlación; de lo contrario, simplemente divídalos si una clase es muy grande, es necesario subdividir aún más las funciones y agrupar las más relevantes.

Principio de apertura y cierre:

Abierto para ampliación, cerrado para modificación.

El requisito extremo es: una vez completado el programa, el código no se puede modificar a menos que se corrija el error y el código solo se puede ampliar.

Por ejemplo, si una función tiene múltiples métodos de implementación, es decir, hay múltiples tipos, no use ramas if-else para especificar su tipo en una clase, programe la interfaz y use la herencia para; Para lograr transparencia, agregue una clase para cada tipo.

Piensa en esta pregunta, cada vez que agregas un tipo, ¿es mejor modificar la clase original y agregar una rama else, o implementar una nueva clase que no tenga nada que ver con el código anterior?

La siguiente implementación es el resultado de estar abierta a modificaciones. Cada vez que desee agregar un tipo, debe modificar el código original, lo que puede causar que se introduzcan errores en el sistema original. volver a probarse:

clase Demostración { public static final int TYPE_A = 1; public static final int TYPE_B = 2; public static final int TYPE_C = 3; ) { //actuar como TYPE_A } if(tipo == 2) { //actuar como TYPE_B } if(tipo ==3) { //actuar como TYPE_C }

}

}

La siguiente situación está cerrada a la modificación y queda abierta a la expansión a través de la interfaz. Agregar un nuevo tipo no requiere modificar el código original:

tipo de interfaz {

} class Demo2 { tipo privado mType = null; public Demo2() {

} public void setType(tipo tipo) {

mType = tipo; como lo que asignaste. }

} clase TypeA implementa Type {

}

El principio de sustitución de Liskov:

La apertura y el cierre. El principio se implementa mediante la sustitución de Liskov, es decir, programar la interfaz, establecer una abstracción y la implementación concreta reemplaza la abstracción en tiempo de ejecución. Todos los lugares que hacen referencia a la clase base deben poder usar de forma transparente sus objetos de subclase.

El principio de dependencia:

Es decir, la persona que llama (código de cliente) no depende de los detalles de implementación de la persona que llama (código de implementación), sino que se basa en su abstracción.

La persona que llama no depende de la implementación específica de la persona que llama, sino que se basa en la abstracción de la persona que llama, por lo que la persona que llama puede ser reemplazada sin ningún sentido en el futuro;

Principio de aislamiento de la interfaz:

La definición de la interfaz debe minimizarse, es decir, la interfaz solo se centra en un área, no grande y completa, sino pequeña y detallada.

Por ejemplo, la interfaz Closeable solo se preocupa por cerrar, independientemente de otras cosas en su clase de implementación, y la interfaz Comparable solo se preocupa por la comparación, independientemente de otras cosas.

Principio de Dimit (Principio de mínimo conocimiento):

Es saber poco sobre las clases, es decir, las clases solo necesitan conocer los métodos que las clases dependientes deben conocer y no entienden. el resto de los detalles; la clase debería tener menos "amigos", es decir, la clase sólo debería depender de aquellos con los que debe tratar tanto como sea posible, en lugar de depender mucho.

Cuando las grandes pequeñas y medianas empresas buscan desarrollo de software personalizado, productos de software, construcción de sitios web y otros servicios, deben buscar empresas como Ucomei que cuenten con equipos técnicos de primera clase, personal de servicio profesional, y fuertes capacidades técnicas. Empresa de software regular.