La programación orientada al objeto (OOP) del es un paradigma programado que utiliza el " objects" y sus interacciones para diseñar usos y programas de computadora. Se basa en varias técnicas, incluyendo la encapsulación, la modularidad, el polimorfismo, y la herencia . No era de uso general en el desarrollo de aplicaciones de corriente del software hasta el principio de los 90. Muchos lenguajes de programación moderno ahora apoyan OOP.
El lenguaje de programación de Simula era el primer para introducir los conceptos que eran la base de la programación orientada al objeto (los objetos, las clases, las subclases, los métodos virtuales, los coroutines, colección de basura, y simulación de acontecimiento discreto) como sobreconjunto de ALGOL . Simula fue utilizado para el modelado físico, tal como modelos para estudiar y para mejorar el movimiento de naves y de su contenido a través de puertos del cargo. El palique era el primer lenguaje de programación que se llamará " objeto-oriented".
La programación orientada al objeto se puede considerar como una colección de de cooperación se opone, en comparación con una opinión tradicional en la cual un programa se pueda considerar como grupo de tareas a la computadora (" Quot de las subrutinas ;). En OOP, cada objeto es capaz de recibir mensajes, de procesar datos, y de enviar mensajes a otros objetos.
Cada objeto se puede ver como pequeña máquina independiente con un papel o una responsabilidad distinto. Las acciones o el " " de los operadores ; en los objetos se asocian de cerca al objeto. Por ejemplo, en OOP, las estructuras de datos tienden a llevar a sus propios operadores alrededor con él (o por lo menos " inherit" ellas de un objeto o de un " similar; class"). El acercamiento tradicional tiende a ver y a considerar datos y comportamiento por separado.
Dog consistiría en los rasgos compartidos por todos los perros, tales como color de la casta y de la piel (características), y la capacidad de raspar y de sentarse (los comportamientos). Las clases proporcionan la modularidad y la estructura en un programa de computadora orientado al objeto. Una clase debe típicamente ser reconocible a un familiar del non-programmer con el dominio del problema, significando que las características de la clase deben tener sentido en contexto. También, el código para una clase debe ser relativamente autónomo (generalmente usar la encapsulación ). Colectivamente, las características y los métodos definidos por una clase se llaman los miembros . ; Objeto : Un caso particular de una clase. La clase de Dog define todos los perros posibles enumerando las características y los comportamientos que pueden tener; el objeto Lassie es un perro particular, con las versiones particulares de las características. Un Dog tiene piel; Lassie tiene piel marrón-y-blanca. En jerga del programador, el objeto Lassie es un caso de la clase de Dog. El sistema de los valores de las cualidades de un objeto particular se llama su estado . El objeto consiste en el estado y el comportamiento que se define en la clase de objeto. ; Método : Capacidades de un objeto. Lassie, siendo un Dog, tiene la capacidad de raspar. El bark () es tan uno de métodos de Lassie. Ella puede tener otros métodos también, por ejemplo el sit () o el eat () . Dentro del programa, usar un método afecta generalmente a solamente un objeto particular; todo el Dogs puede raspar, pero usted necesita solamente un perro particular hacer el descortezamiento. ; Mensaje que pasa : “El proceso por el cual un objeto envía datos a otro objeto o pide el otro objeto para invocar un método. No todos los conceptos antedichos deben ser encontrados en todos los lenguajes el de programación orientado al objeto, y la programación tan orientada al objeto esa las clases de las aplicaciones se llama a veces programado Clase-basado . Particularmente, programado Prototipo-basado no utiliza típicamente las clases del . Consecuentemente, una terminología perceptiblemente diversa con todo análoga se utiliza para definir los conceptos del objeto del y del caso del, aunque no haya objeto s del en estas idiomas.
La lengua del palique, que fue desarrollada en el Xerox PARC en los años 70, introdujo la programación orientada al objeto término para representar el uso penetrante de objetos y de mensajes como la base para el cómputo. Las ideas influenciaron a los creador del palique expuestas en el Simula 67, pero el palique fue diseñado para ser un sistema completamente dinámico en el cual las clases se podrían crear y modificar dinámicamente algo que simplemente usar parásitos atmosféricos unos como en el Simula 67 . Las ideas en el Simula 67 también fueron utilizadas en muchas otras idiomas, de derivados balbucean al Pascal .
Programación orientada al objeto desarrollada como la metodología de programación dominante durante el mediados de los 90, en gran parte debido a la influencia C++ . Su dominación fue cementada más a fondo por el renombre de levantamiento de los interfaces utilizador gráficos para los cuales la programación orientada al objeto está bien adaptada. Un ejemplo de una biblioteca dinámica estrechamente vinculada del GUI y de la lengua de OOP se puede encontrar en los armazones del cacao en el mac OS x, escrito en el C objetiva, una extensión orientada al objeto, dinámica de la mensajería a C basada en palique. Los juegos de herramientas de OOP también realzaron el renombre de la programación Event-driven (aunque este concepto no se limita a OOP). Una cierta sensación que era cuál la asociación con GUIs (verdadero o percibido) OOP propulsado en la corriente principal programada.
En el ETH Zürich, el Niklaus Wirth y sus colegas también había estado investigando los asuntos tales como la abstracción de datos y la programación modular . El Modula-2 incluyó ambos, y su diseño sucesivo, Oberon, incluyó un acercamiento distintivo para oponerse la orientación, clases, y tales. El acercamiento es palique desemejante, y muy desemejante de C++.
Las características orientadas al objeto se han agregado a muchas idiomas existentes durante ese tiempo, incluyendo Ada, BASIC, balbucean, FORTRAN, Pascal, y otros. El adición de estas características a las idiomas que no fueron diseñadas inicialmente para ellas llevó a menudo a los problemas con compatibilidad y la capacidad de mantenimiento del código.
En el último Java de la década ha emergido en uso amplio parcialmente debido a su semejanza al C y al C++, pero quizás más importantemente debido a su puesta en práctica usar una máquina virtual que se piensa para funcionar con código sin cambiar en muchas diversas plataformas. Esta última característica ha hecho muy atractivo a tiendas más grandes del desarrollo con los ambientes heterogéneos.NET de Microsoft tiene un objetivo similar e incluye/apoya varias nuevas idiomas, o variantes los más viejos.
Más recientemente, un número de idiomas han emergido que son sobre todo orientadas al objeto con todo compatibles con la metodología procesal, tal como pitón y rubí . Además de Java, las idiomas orientadas al objeto recientes lo más comercialmente posible importantes son probablemente Visual Basic .NET y C# diseñado para la plataforma .
Apenas como programado procesal llevó a los refinamientos de técnicas tales como programación estructurada, los métodos de diseño orientados al objeto modernos de software incluye refinamientos tales como el uso de los patrones del diseño, del diseño por el contrato, y que modelaba las idiomas (tal como UML ).
El modelo de objeto del documento de los documentos del HTML, XHTML, y XML en el Internet tiene atascamientos al Javascript popular /a la lengua de ECMAScript . El Javascript es quizás la lengua programada Prototipo-basada el más conocido de que emplea la reproducción de prototipos algo que heredando de una clase.
considera también: El diseño modela el
Patrones del diseño del : Los elementos del software orientado al objeto reutilizable son un libro influyente publicado en 1995 por la gamma de Erich, el timón de Richard, el Rafael Johnson, y el Juan Vlissides, a veces ocasional llamado el " Cuadrilla de Four." Junto con la exploración de las capacidades y de las trampas de la programación orientada al objeto, describe 23 problemas y patrones programados comunes para solucionarlos. En fecha el abril de 2005, el libro estaba en su 32da impresión. Los patrones típicos del diseño están como siguiendo: style=" del
considera también: Unión mal hecha Objeto-Emparentada, de trazado Objeto-emparentado,
la impedancia de la base de datos de objeto Los sistemas de gestión (RDBMSs) de la base de datis relacional de la programación orientada al objeto y son extremadamente comunes en el hoy del software. Desde bases de datis relacionales no almacenan objetos directo (aunque alguÌn RDBMSs tiene características orientadas al objeto para aproximar esto), hay una necesidad general de tender un puente sobre los dos mundos. Hay un número de soluciones ampliamente utilizadas a este problema. Uno del mas comun es el de trazado Objeto-emparentado, según lo encontrado en bibliotecas como los objetos de datos de Java, y rubí en los carriles 'ActiveRecord.
Hay también las bases de datos de objeto que se pueden utilizar para substituir RDBMSs, pero éstas no han sido tan comercialmente acertadas como RDBMSs.
coalgebraic datatypes
Cuantificación existencial y módulos
Repetición
expedientes y extensiones de registro * el F-limitó el polimorfismo
Tentativas de encontrar una definición o una teoría del consenso detrás de objetos para no haber probado muy acertado (sin embargo, ver el " Abadi y Cardelli: Una teoría de Objects" para las definiciones formales de muchos conceptos y de construcciones de OO), y divergir a menudo extensamente. Por ejemplo, algunas definiciones se centran en actividades mentales, y algunas en la estructuración mera del programa. Una de las definiciones más simples es que OOP es el acto de usar el " map" estructuras de datos o órdenes que pueden contener funciones e indicadores a otros mapas, todas con un poco de azúcar sintáctico y del scoping en tapa. La herencia puede ser realizada reproduciendo los mapas (a veces llamados " prototyping").
escribió en 1995, " El adición de OOP al Emacs no es claramente una mejora; Utilicé OOP al trabajar en el balbuceo los sistemas de la ventana de la máquina y discrepo con la opinión generalmente que es una manera superior a program." * Un estudio de Potok y otros no ha demostrado ninguna diferencia significativa en productividad entre OOP y los acercamientos procesales.
La fecha de Christopher J. indicó esa comparación crítica de OOP a otras tecnologías, emparentada particularmente, es difícil debido a carencia de una definición acordada y rigurosa de OOP.
El Alexander Stepanov sugirió que OOP proporcione un punto de vista matemático-limitado y llamado le, " casi tanto de una broma como Intelligence" artificial; (posiblemente refiriendo a los proyectos de la inteligencia artificial y a la comercialización de los años 80 que se ven a veces como celosísimos en vista retrospectiva). Dijkstra escribió: el
… qué sociedad pide de forma aplastante es el aceite de serpiente . Por supuesto, el aceite de serpiente tiene los nombres más impresionantes - si no usted estaría vendiendo nada como " Análisis estructurado y Design", " Software Engineering", " Madurez Models", " Información de gerencia Systems", " Ayuda integrada Environments" del proyecto; " Objeto Orientation" y " Proceso de negocio Re-engineering" (los 3ultimos tres que son conocidos como IPSE, OO y BPR, respectivamente). " - EWD 1175: Las fuerzas de la empresa académica
.
| Random links: | Rayo de N | Dril de algodón | Periclasa | Puente de Chelsea | Ballenero |