Top 10 de los artículosYouTubeGmail Goole GayRomeo Números chinos Números romanos Orkut Costco Sistema porta hepático El mundo Factbook |
News: |
Programación orientada al objeto (OOP) es a paradigma de programación ese aplicaciones “objetos“y sus interacciones para diseñar usos y programas de computadora. Las técnicas de programación pueden incluir características por ejemplo encapsulación, modularidad, polimorfismo, y herencia. No era de uso general en el desarrollo de corriente del uso del software hasta los años 90 tempranos. Muchos modernos lenguajes de programación ahora ayuda OOP.
Contenido |
La programación orientada al objeto puede remontar sus raíces a los años 60. Mientras que el hardware y el software llegaron a ser cada vez más complejos, los investigadores estudiaron las maneras de las cuales la calidad del software podría ser mantenida. La programación orientada al objeto fue desplegada en parte como tentativa de tratar este problema fuertemente acentuando unidades discretas de "program logic" y de la reutilidad en software.
Simula el lenguaje de programación era el primer para introducir la programación orientada al objeto subyacente de los conceptos (los objetos, las clases, las subclases, los métodos virtuales, los coroutines, colección de la basura, y simulación discreta del acontecimiento) como sobreconjunto de ALGOL. Simula fue utilizado para modelar 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. Palique era el primer lenguaje el de programación que se llamará “orientado al objeto”.
La programación orientada al objeto se puede considerar como colección de cooperating objetos, en comparación con una opinión tradicional en la cual un programa se puede considerar como grupo de tareas de computar (“subprogramas"). 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 “operadores“en los objetos se asocian de cerca al objeto. Por ejemplo, en la programación orientada al objeto, estructuras de datos tienda para llevar a sus propios operadores alrededor con ellos (o por lo menos “herede” los de un objeto similar o la “clase”). El acercamiento tradicional tiende para ver y para considerar datos y comportamiento por separado.
Un examen de Deborah J. Armstrong [1] de casi 40 años de literatura que computaba identificó un número de quarks del `', o los conceptos fundamentales, encontraron en la mayoría fuerte de definiciones de OOP. Son los siguientes:
Perro 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 modularidad y estructura en un programa de computadora orientado al objeto. Una clase debe típicamente ser reconocible a un non-programmer al corriente del 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 con encapsulación). Colectivamente, las características y los métodos definidos por una clase se llaman miembros.Perro 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. A Perro tiene piel; Lassie tiene piel marrón-y-blanca.Lassie el objeto es caso de Perro clase. 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 del objeto.Lassie, siendo a Perro, tiene la capacidad de raspar. Tan corteza () es uno de Lassie'métodos de s. Ella puede tener otros métodos también, por ejemplo siéntese () o coma () o caminata (). Dentro del programa, usar un método afecta generalmente solamente un objeto particular; todos Perros puede raspar, pero usted necesita solamente un perro particular hacer raspar.Criador puede decir Lassie opóngase para sentarse pasando “sientan” el mensaje que invoca a Lassie “sienta” método. El sintaxis varía entre las idiomas, por ejemplo: [El Lassie se sienta] en Objetivo-c. En mensaje del código-nivel de Java el pasar corresponde al “método que llama”.Perro pudo hacer subclases llamar Collie, Chihuahua, y GoldenRetriever. En este caso, Lassie sea un caso del Collie subclase. Suponga Perro la clase define un método llamado corteza () y una característica llamó furColor. Cada uno de sus subclases (Collie, Chihuahua, y GoldenRetriever) heredará a estos miembros, significando que las necesidades del programador solamente de escribir el código para ellos una vez.Collie la clase pudo especificar que el defecto furColor para un collie es marrón-y-blanco. Chihuahua la subclase pudo especificar que corteza () el método produce una alta echada por defecto. Las subclases pueden también agregar a nuevos miembros. Chihuahua la subclase podía agregar un método llamado tiemble (). Un caso individual del chihuahua utilizaría tan un agudo corteza () de Chihuahua subclase, que alternadamente heredó el generalmente corteza () de Perro. El objeto del chihuahua también tendría tiemble () método, pero Lassie no, porque ella es a Collie, no a Chihuahua. De hecho, la herencia es un `es-uno' relación: Lassie es a Collie. A Collie es a Perro. Así, Lassie hereda los métodos de ambos Collies y Perros.Perros y Gatos, y a Quimera el objeto se podría crear de estos dos que hereda todo el comportamiento (del múltiplo) de gatos y de perros. Esto no se apoya siempre, pues puede ser duro poner en ejecución y utilizar bien.Perro la clase tiene a corteza () método. El código para corteza () el método define exactamente cómo sucede una corteza (e.g., cerca inhale () y entonces exhale (), en una echada y un volumen particulares). Timmy, Lassieel 'amigo de s, sin embargo, no necesita saber exactamente ella raspa. La encapsulación es alcanzada especificando qué clases pueden utilizar a los miembros de un objeto. El resultado es que cada objeto expone a cualquier clase un seguro interfaz - esos miembros accesibles a esa clase. La razón de la encapsulación es prevenir a clientes de un interfaz dependiendo de esas partes de la puesta en práctica que sean probables cambiar en futuro, de tal modo permitiendo que esos cambios sean realizados más fácilmente, es decir, sin cambios a los clientes. Por ejemplo, un interfaz puede asegurarse de que los perritos puedan ser agregados solamente a un objeto de la clase Perro por código en esa clase. Especifican a los miembros a menudo como público, protegido o privado, determinándose si están disponibles para todas las clases, las subclases o solamente la clase que define. Algunas idiomas van más lejos: Java utiliza defecto tenga acceso al modificante para restringir el acceso también a las clases en el mismo paquete, C# y VB.NET reserve a algunos miembros a las clases en la misma asamblea usando palabras claves interno (C#) o Amigo (VB.NET), y Eiffel y C++ permite que uno especifique qué clases pueden tener acceso a cualquier miembro.Lassie Perro puede ser tratado como a Perro mucho del tiempo, a Collie cuando es necesario para tener acceso Collie- cualidades o comportamientos del específico, y como Animal (quizás la clase del padre de Perro) al contar los animales domésticos de Timmy.Coche sea compuesto de un motor, de una caja de engranajes, de objetos de dirección, y de muchos más componentes. Para construir Coche la clase, una no necesita saber los diversos componentes trabajan internamente, pero solamente cómo interconectar con ellos, es decir, envíeles los mensajes, reciba los mensajes de ellos, y quizás haga los diversos objetos que componen la clase interactivos con uno a.Perro se ordena a hable (), esto puede sacar a corteza (). Sin embargo, si a Cerdo se ordena a hable (), esto puede sacar oink (). Ambos heredan hable () de Animal, solamente sus métodos derivados de la clase eliminan los métodos de la clase del padre; esto está eliminando polimorfismo. Sobrecargar polimorfismo es el uso de una firma del método, o un operador tal como `+', de realizar varias diversas funciones dependiendo de la puesta en práctica. El `+' operador, por ejemplo, se puede utilizar para realizar la adición del número entero, la adición del flotador, el encadenamiento de la lista, o el encadenamiento de la secuencia. Cualquieres dos subclases de Número, por ejemplo Número entero y Doble, esperan agregar junto correctamente en una lengua de OOP. La lengua debe por lo tanto sobrecargar al operador del encadenamiento, `+', para trabajar esta manera. Esto ayuda a mejorar legibilidad del código. Cómo se pone en ejecución esto varía de lengua a la lengua, pero la mayoría de las idiomas de OOP apoyan por lo menos un cierto nivel de sobrecargar polimorfismo. Muchas idiomas de OOP también apoyan Polimorfismo paramétrico, donde el código se escribe sin la mención de cualquier tipo específico y así se puede utilizar transparente con cualquier número de nuevos tipos. Indicadores es un ejemplo de una rutina polimórfica simple que se pueda utilizar con muchos diversos tipos de objetos.[2]No todos los conceptos antedichos deben ser encontrados en todos los lenguajes de programación orientados al objeto, y la programación tan orientada al objeto esa las clases de las aplicaciones se llama a veces programación clase-basada. Particularmente, programación prototipo-basada no utiliza típicamente clases. Consecuentemente, una terminología perceptiblemente diversa con todo análoga se utiliza para definir los conceptos de objeto y caso, aunque hay no objetos en estas idiomas.
El concepto de objetos y de casos en computar tenía su primera brecha importante con PDP-1 sistema en MIT cuál era probablemente el ejemplo más temprano de la arquitectura basada capacidad. Otros temprano ejemplo era Bloc de bocetos hecho cerca Ivan Sutherland en 1963; sin embargo, esto era un uso y no una a paradigma de programación. Los objetos como entidades de programación fueron introducidos en los años 60 adentro Simula 67, un lenguaje de programación diseñó para hacer simulaciones, creado cerca Dahl ole-Johan y Kristen Nygaard de Centro de cómputo noruego en Oslo. (Según se informa, la historia es que trabajaban en simulaciones de la nave, y fueron confundidos por la explosión combinatoria de cómo las diversas cualidades de diversas naves podrían afectar uno otro. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, cada clase de los objetos que eran responsables de definir su poseer datos y comportamiento.)[la citación necesitó] Tal acercamiento era una extrapolación simple de los conceptos usados anterior adentro análogo programación. En análogo las computadoras, el tal traz directo de fenómenos/de objetos del mundo real a los fenómenos/a los objetos análogos (e inversamente), eran (y es) “simulación llamada”. Simula no sólo introdujo la noción de clases, pero también de casos de clases, que es probablemente el primer uso explícito de esas nociones. Las ideas de Simula 67 influenció muchas idiomas más últimas, especialmente palique y derivados de Lisp y PASCAL.
Palique lengua, en la cual fue convertido Xerox PARC en los años 70, introducidos el término Programación orientada al objeto para representar el uso penetrante de objetos y de mensajes como la base para el cómputo. Palique las ideas influenciaron a los creador introducidas adentro Simula 67, pero Palique fue diseñado ser un sistema completamente dinámico en en el cual las clases se podrían crear y modificar dinámicamente más bien que estáticamente como Simula 67[3]. El palique y con él OOP fue introducido a una audiencia más ancha por la aplicación del agosto de 1981 Compartimiento del octeto.
En los años 80, había algunas tentativas de diseñar las arquitecturas del procesador que la ayuda incluida del hardware para los objetos en memoria sino éstas no era acertadas. Los ejemplos incluyen iAPX 432 de Intel y Linn elegante Rekursiv.
Programación orientada al objeto desarrollada como la metodología de programación dominante durante los mid-1990s, en gran parte debido a la influencia de C++[citación necesitada]. Su dominación fue cementada más a fondo por el renombre de levantamiento de interfaces utilizador gráficos, para que la programación orientada al objeto está bien adaptada. Un ejemplo de una biblioteca dinámica de cerca relacionada del GUI y de la lengua de OOP se puede encontrar en Cacao armazones encendido OS X del Mac, escrito adentro C objetiva, una extensión orientada al objeto, dinámica de la mensajería a C basada en palique. Las cajas de herramientas de OOP también realzaron el renombre de 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 de programación.
En ETH Zurich, Niklaus Wirth y sus colegas también habían estado investigando los asuntos tales como abstracción de los datos y programación modular. Modula-2 incluyó ambos, y su diseño que tenía éxito, Oberon, incluido 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, Lisp, FORTRAN, PASCAL, y otros. La adición de estas características a las idiomas que no fueron diseñadas inicialmente para ellas condujo a menudo a los problemas con compatibilidad y la capacidad de mantenimiento del código.
En la última década Java ha emergido en uso amplio parcialmente debido a su semejanza a C y a C++, pero quizás más importantemente debido a su puesta en práctica usando a máquina virtual eso se piensa para funcionar 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. Microsoft .NET la iniciativa 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, por ejemplo Python y Rubí. Además de Java, las idiomas orientadas al objeto recientes lo más comercialmente posible importantes están probablemente .NET básico visual (VB.NET) y C#, ambos diseñaron para Microsoft .NET plataforma. VB.NET y C# ambos apoyan herencia de la cruz-lengua, permitiendo las clases definidas en una lengua a las clases de la subclase definidas en la otra lengua.
Muchas universidades han comenzado recientemente a enseñar diseño orientado al objeto en clases introductorias de la informática.
Apenas como programación procesal conducido a los refinamientos de técnicas por ejemplo programación estructurada, los métodos de diseño orientados al objeto modernos del software incluyen refinamientos tales como el uso de patrones del diseño, diseño por el contrato, y modelar idiomas (por ejemplo UML).
Estos últimos años, la programación orientada al objeto ha llegado a ser especialmente popular adentro lenguajes de programación scripting. Python y Rubí scripting las idiomas construidas en principios de OOP, mientras que Perl y PHP han estado agregando características orientadas al objeto desde Perl 5 y PHP 4, y ColdFusion desde la versión 6.
Modelo del objeto del documento de HTML, XHTML, y XML los documentos en el Internet tienen atascamientos al popular Javascript/ECMAScript lengua. El Javascript es quizás el más conocido programación prototipo-basada lengua que emplea la reproducción de prototipos más bien que la herencia de una clase.
ActionScript también utiliza un acercamiento orientado al objeto y es justo como el Javascript basado en ECMAScript.
Hay un número de desafíos de programación que un revelador encuentra regularmente en diseño orientado al objeto. Hay soluciones también extensamente aceptadas a estos problemas. El más conocidos son patrones del diseño codificados por Gamma y otros, pero en un sentido más amplio el término “patrones del diseño“se puede utilizar para referir a cualquier solución general, repetible a un problema comúnmente el ocurrir en diseño del software. Algunos de estos problemas comúnmente que ocurren tienen implicaciones y soluciones particulares al desarrollo orientado al objeto.
Patrones del diseño: Elementos del software orientado al objeto reutilizable es un libro influyente publicado en 1995 cerca Gamma de Erich, Timón de Richard, Ralph Johnson, y Juan Vlissides, a veces ocasional llamado la “cuadrilla de cuatro.” Junto con explorar las capacidades y las trampas de la programación orientada al objeto, describe 23 problemas y patrones de programación comunes para solucionarlos. En el día abril de 2007, el libro consistía en su 36.a impresión. Los patrones típicos del diseño son como sigue:
Programación orientada al objeto y sistemas de gerencia de base de datos emparentada (RDBMSs) sea extremadamente común en software hoy. Desde entonces bases de datos emparentadas no almacene los objetos directamente (aunque algú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 más común es el traz objeto-emparentado, según lo encontrado en bibliotecas tenga gusto Objetos de los datos de Java, y Rubí en los carriles'ActiveRecord.
Hay también bases de datos del objeto cuál se puede utilizar para substituir RDBMSs, pero éstos no han sido tan comercialmente acertados como RDBMSs.
OOP se puede utilizar para traducir de fenómenos del mundo real a los elementos de programa (y viceversa). OOP incluso fue inventado con el fin de modelar físico en Simula-67 lenguaje de programación. Sin embargo, no cada uno conviene que eso el traz del mundo real directo es facilitado por OOP, o que es incluso una meta digna; Bertrand Meyer discute adentro Construcción orientada al objeto del software [4] que un programa es un no modelo del mundo sino un modelo de una cierta parte del mundo; La “realidad es un primo quitado dos veces”. Al mismo tiempo, algunas limitaciones principales de OOP habían sido observadas. [5]
Niklaus Wirth dicho de OOP en sus “buenas ideas de papel con parecer de cristal”, “este paradigma refleja de cerca la estructura de sistemas “en el del mundo real”, y está por lo tanto bien adaptado modelar sistemas complejos con comportamiento complejo.”
Ha habido varias tentativas en la formalización de los conceptos usados en la programación orientada al objeto. Los conceptos y las construcciones siguientes se han utilizado como interpretaciones de los conceptos de OOP:
Tentativas de encontrar una definición o una teoría del consenso detrás de objetos para no haber probado muy acertado (sin embargo, vea “Abadi y Cardelli: Una teoría de objetos " [6] para las definiciones formales de muchos conceptos y de construcciones de OOP), y diverja 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 las estructuras de datos del “mapa” o los órdenes que pueden contener funciones e indicadores a otros mapas, todas con un poco de azúcar sintáctica y del scoping en tapa. La herencia puede ser realizada reproduciendo los mapas (a veces llamados el “prototyping”).
... qué sociedad pide de forma aplastante es aceite de la serpiente. Por supuesto, el aceite de la serpiente tiene los nombres más impresionantes - si no usted estaría vendiendo nada como “análisis estructurado y el diseño”, “tecnología de dotación lógica”, “madurez modela”, “los sistemas de información de gerencia”, “los ambientes integrados” “orientación del objeto” y “Re-engineering de proceso de la ayuda del proyecto del negocio” (los últimos tres que son conocidos como IPSE, OO y BPR, respectivamente).” - EWD 1175: Las fuerzas de la empresa académica
|
Custom Search
|
© Copyright 2011 WorldLingo. Reservados todos los derechos.