La programación orientada a objetos consiste en ordenar datos en conjuntos modulares de elementos de
información del mundo real (denominado un dominio). Estos elementos
de datos se llaman objetos. Estos datos se agrupan de acuerdo a las
características principales del mundo real de estos elementos (tamaño, color,
etc.).
El enfoque de objetos es una idea que
se ha probado con creces. Simula fue el primer lenguaje de
programación en implementar el concepto de clases en 1967. En
1976, Smalltalk implementó los conceptos de encapsulación,
agrupación y herencia (los conceptos principales de la programación orientada a
objetos). Por otra parte, se han implementado varios lenguajes de programación
orientada a objetos a escala global (Eiffel, Objective C, Loops,
etc.).
La dificultad que presenta este enfoque
es la creación de una representación abstracta, en forma de objetos, de
entidades que realmente existen (perro, auto, lámpara eléctrica...) o que
existen virtualmente (seguridad social, clima...).
Un objeto se caracteriza por varios
conceptos:
Atributos: estos son los datos que caracterizan al objeto. Son variables que
almacenan datos relacionados al estado de un objeto.
Métodos (usualmente llamados funciones de miembro): Los
métodos de un objeto caracterizan su comportamiento, es decir, son todas las
acciones (denominadas operaciones) que el objeto puede realizar por
sí mismo. Estas operaciones hacen posible que el objeto responda a las
solicitudes externas (o que actúe sobre otros objetos). Además, las operaciones
están estrechamente ligadas a los atributos, ya que sus acciones pueden
depender de, o modificar, los valores de un atributo.
Identidad: El objeto tiene una identidad, que lo distingue de otros objetos, sin
considerar su estado. Por lo general, esta identidad se crea mediante un
identificador que deriva naturalmente de un problema (por ejemplo: un producto puede estar representado por un código, un automóvil, por un número de modelo,
etc.).
Una clase es una construcción que permite crear tipos personalizados
propios mediante la agrupación de variables de otros tipos, métodos y
eventos. Una clase es como un
plano. Define los datos y el
comportamiento de un tipo. Si la clase
no se declara como estática, el código de cliente puede utilizarla mediante la
creación de objetos o instancias que se asignan a una variable. La variable permanece en memoria hasta que
todas las referencias a ella están fuera del ámbito. En ese momento, CLR la marca como apta para
la recolección de elementos no utilizados.
Si la clase se declara como estática, solo existe una copia en memoria y
el código de cliente solo puede tener acceso a ella a través de la propia clase
y no de una variable de instancia. Para
obtener más información, vea Clases estáticas y sus miembros (Guía de
programación de C#).
A diferencia de los structs, las clases admiten la herencia, una
característica fundamental de la programación orientada a objetos. Para obtener más información, vea Herencia
(Guía de programación de C#).
Clases:
Las clases son
plantillas que agrupan comportamiento (métodos) y estados (atributos) de los
futuros objetos.
Los objetos son instancias de una clase. Usando el símil “variable
– tipo” de la programación estructurada, se entiendo que un objeto es
una variable que tiene el comportamiento y estados del tipo (objeto)
Veamos la creación de la
clase Persona
1
2
3
4
5
6
7
8
9
public class Persona {
public String nombre;
public int edad;
public void correr(){
/*
por implementar */
}
}
y dentro del cuerpo del
programa instanciamos una nueva Persona denominada Esteban:
Laherencia es específica de la programación orientada a
objetos, donde una clase nueva se crea a partir de una clase existente. Laherencia (a la que habitualmente se denominasubclases) proviene del hecho de que la subclase (la nueva clase
creada) contiene las atributos y métodos de la clase primaria. La principal
ventaja de la herencia es la capacidad para definir atributos y métodos nuevos
para la subclase, que luego se aplican a los atributos y métodos heredados. Esta particularidad permite crear una estructura
jerárquica de clases cada vez más especializada. La gran ventaja es que uno ya
no debe comenzar desde cero cuando desea especializar una clase existente. Como
resultado, se pueden adquirir bibliotecas de clases que ofrecen una base que
puede especializarse a voluntad (la compañía que vende estas clases tiende a
proteger las datos miembro usando laencapsulación).
Herencia múltiple
Algunos lenguajes
orientados a objetos, como C++ permiten herencias múltiples, lo que significa
que una clase puede heredar los atributos de otras dos superclases. Este método
puede utilizarse para agrupar atributos y métodos desde varias clases dentro de
una sola.
La Programación Orientada a Objetos (POO u OOP)
es un
paradigma de programación que define los programas en
términos de “clases
de objetos”, objetos que son entidades
que combinan estado (propiedades o
datos),
comportamiento (procedimientos o métodos) e identidad
(propiedad del
objeto que lo diferencia del resto). La
programación orientada a objetos
expresa un programa
como un conjunto de estos objetos, que colaboran entre
ellos para realizar tareas. Esto permite hacer los programas
y módulos más
fáciles de escribir, mantener y reutilizar.
Elementos de la POO:
-. Objetos:contienen
toda la información que permite definirlo e identificarlo frente a otros
objetos pertenecientes a otras clases (e incluso entre objetos de una misma
clase, al poder tener valores bien diferenciados en sus atributos).
A su vez, dispone de mecanismos de interacción
(los llamados métodos) que favorecen la comunicación entre objetos (de una
misma clase o de distintas), y en consecuencia, el cambio de estado en los
propios objetos. Esta característica lleva a tratarlos como unidades
indivisibles, en las que no se separan (ni deben separarse) información (datos)
y procesamiento (métodos).
-. Atributos:Los atributos son las características individuales que diferencian un
objeto de otro y determinan su apariencia, estado u otras cualidades. Los
atributos se guardan en variables denominadas de instancia, y cada objeto
particular puede tener valores distintos para estas variables. Las variables de instancia también denominados
miembros dato, son declaradas en la clase pero sus valores son fijados y
cambiados en el objeto. Además de las variables de instancia hay variables
de clase, las cuales se aplican a la clase y a todas sus instancias. Por
ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos los
automóviles.
-.Mensajes:Corresponde
a la forma que tienen los objetos para comunicarse entre sí, de esta forma, el
objeto que activa el mensaje se llama objeto emisor y el que lo recibe objeto
receptor. Cabe señalar que un mensaje debe ser activado o generado desde un
método hacia un objeto. En términos generales equivale a la llamada a un
procedimiento o función. Forma general de un mensaje: receptor_mensaje.selector_mensaje [(parámetros)] p/e ventana_editor.maximizar;
documento1.imprimir(2);
-. Clases: son declaraciones o abstracciones de objetos, lo que
significa, que una clase es la definición de un objeto. Cuando se programa un
objeto y se definen sus características y funcionalidades, realmente se programa
una clase.
Para crear una clase se utiliza la palabra
reservada class y a continuación el nombre de la clase. La definición de la
clase se pone entre las llaves de apertura y cierre. El nombre de la clase
empieza por letra mayúscula. class Rectangulo{ //miembros dato //funciones miembro }
-.Instanciación:una
instancia se produce con la creación de un objeto perteneciente a una clase (se
dice que se instancia la clase). El objeto que se crea tiene los atributos,
propiedades y métodos de la clase a la que pertenece. Los objetos y sus
características se usan en la construcción de programas, ya sea como
contenedores de datos o como partes funcionales del programa.
Características del POO:
-. Abstracción:Mediante
la abstracción la mente humana
modeliza la realidad en forma de objetos. Para
ello busca
parecidos entre la realidad y la posible implementación de
objetos
del programa que simulen el funcionamiento de los
objetos reales.
-.
Encapsulamiento:Uno de los objetivos primordiales de la P.O.O.,
es la creación de objetos que funcionen como entidades complejas, es decir
autosuficientes, una de las reglas del encapsulamiento es que el programador
nunca necesita acceder directamente a los datos de un objeto, en vez de esto se
deben definir métodos dentro del objeto que gobiernen toda la manipulación de
datos. El encapsulamiento está referido, también, a los métodos de cada objeto
en el sentido que su código interno debe ser transparente a la hora de
activarse.
-.Polimorfismo:Se
refiere a la capacidad que tiene el objeto para hacer lo adecuado después de
haber recibido un mensaje, independientemente de quién lo haya enviado. Hay que
tener en cuenta que el polimorfismo se mueve a través de la herencia, dicho de
otra forma trata de hacer posible enviar mensajes genéricos a objetos y que
éstos realicen lo estipulado de acuerdo a su codificación interna, es decir, la
acción varía en relación al receptor del mensaje.
Ejemplo: Se desea enviar un mensaje a dos objetos
distintos (Triángulo y Rectángulo) los cuales podrían ser descendientes de la
clase polígono, sin embargo cuando el triángulo reciba la orden área, la
ejecución de este método se obtendrá a partir de (b*h)/2 en cambio si se activa
el mismo método para el rectángulo el valor se calculará a partir de ð *r2 ,
aún cuando ambos objetos recibieron la misma orden.
-. Herencia:En
términos simples la herencia en la P.O.O. es la capacidad que tiene los objetos
para heredar todas o algunas de sus características (datos) y comportamiento
(procedimientos) a sus descendientes o herederos, permitiendo así la
reutilización de código lo que en la práctica se traduce en una herramienta muy
potente de programación.
Esta herencia puede ser a nivel de estado
(características) o protocolo (métodos y procedimientos) o ambas. La herencia
en la P.O.O tiene sus raíces en el concepto de registros anidados.
Ejemplo:
Type
edades: 0..150;
InfPersona = RECORD
Apellido: integer;
Nombre: integer;
Edad: edades;
end;
grados: 0..12;
InfEstudiante= RECORD
persona: InfPersona;
grado: Grados;
Profesor: string (30);
end;
El registro Inf Persona contiene campos que se
utilizan para describir a cualquier persona. El segundo registro Inf Estudiante,
incluye el campo Persona, que contiene los campos del registro Inf Persona. En
la P.O.O., se utiliza el mismo concepto para construir incrementalmente objetos
que son capaces de heredar algunas o todas las características de sus
ascendientes (objetos padres).
Les dejo un videos para que sepan mas acerca de la poo
Identificación de los elementos de la programación dirigida por eventos
Los lenguajes de programación
orientado a eventos están especialmente indicados para aquellos que no tienen
muchos conocimientos de los lenguajes de programación. Con este tipo de
lenguaje de programación se consiguen en muy poco tiempo realizar sus propios
programas utilizando interfaces gráficas gracias el efecto que producen una
serie de eventos. Estos eventos ofrecen al usuario la posibilidad de realizar
una serie de acciones encaminadas a crear un determinado programa.
Para poder logar este proceso es
preciso que actúen dos herramientas conjuntamente. Una sería la herramienta que
permite llevar a cabo el entorno grafico en el que se desarrolla este proceso
de programación. Y la otra, un lenguaje de programación de alto nivel que nos
ayuda a codificar todos estos eventos. Con estas dos aplicaciones podemos
desarrollar cualquier tipo de aplicación o programa que necesitemos.
Dentro de los lenguajes de
programación orientado a eventos tenemos que mencionar al Visual Basic. Este
lenguaje de programación es uno de los que más adeptos tienen dentro de la
programación. Este lenguaje nos permite crear en muy poco tiempo aplicaciones
relativamente complejas. Es un lenguaje de cuarta generación, esto significa
que una mayoría de las tareas que realizamos con el se consiguen sin escribir
código. Lo logramos simplemente con operaciones gráficas que hacemos con el
ratón sobre la pantalla de nuestra computadora.
Con los lenguajes de programación
orientado a eventos podemos crear programas que una vez en funcionamiento se
quedan a la espera de determinadas acciones del usuario del programa, esto es
lo que se conoce con el nombre de eventos. Les dejo un video sobre la programacion dirigida a eventos
Visual Basic
en un lenguaje de programación visual con un entorno de desarrollo gráfico proveniente del Basic. Es uno de los lenguajes más
utilizados para realizar aplicaciones de grande o pequeño tamaño.
Caracteristicas
Barra de
titulo: muestra el nombre del proyecto y del formulario que se está
diseñando actualmente
Barra de
menús: agrupa los menús despegables que contienes todas las operaciones que pueden llevarse a cabo
con Visual Basic 6.0.
Barra de
herramientas estándar: contienen los botones que se utilizan con mayor
frecuencia cuando se trabaja con un proyecto. Simplifica la elección de
opciones de los menús Archivo, Edición, Ver y Ejecutar; además, en el área
derecha presenta la ubicación (coordenadas) y el tamaño del objeto seleccionado
Ventana
de formulario: es el área donde se diseña la interfaz gráfica, es decir, es
donde se inserta electo gráficos, como botones, imágenes, casilla de verificación, cuadros de
listas,etc.
Cuadro de
herramientas: presenta todos los controles necesarios para diseñar una aplicación,
como cuadros de texto, etiquetas, cuadros de listas, botones
de comandos, etc.
Es un lenguajeinterpretado línea a línea por el navegador,
mientras se carga la página, que solamente es capaz de realizar las acciones
programadas en el entorno de esa página HTML donde reside. Sólo es posible
utilizarlo con otro programa que sea capaz de interpretarlo, como los
navegadores web.
Caracteristicas
Es simple, no hace
falta tener conocimientos de programación para poder hacer un programa en java
script.
Maneja objetos dentro
de nuestra página web y sobre ese objeto podemos definir diferentes eventos.
Dichos objetos facilitan la programación de páginas interactivas a la vez que
se evita la posibilidad de ejecutar comandos que pueden peligrosos para la
máquina del usuario, tales como formateo de unidades, modificar archivos, etc.
Es dinámico, responde
a eventos en tiempo real. Eventos como presionar un botón, pasar el puntero del
mouse sobre un determinado texto o el simple hecho de cargar la página o
caducar un tiempo. Con esto podremos cambiar totalmente el aspecto
de nuestra página al gusto del usuario, evitándonos tener en el servidor una
página para cada gusto, hacer cálculos en base a variables cuyo valor esa
determinado por el usuario.
Java esun lenguaje de programación orientado
a objetos que se popularizó a partir del lanzamiento de su
primera versión comercial de amplia difusión, la JDK 1.0 en 1996.
Actualmente es uno de los lenguajes más usados para la programación en todo el
mundo.
Características
Lenguaje totalmente orientado a Objetos.Todos los conceptos en los que se apoya
esta técnica, encapsulación, herencia, polimorfismo, etc., están presentes en
Java.
Disponibilidad de un amplio conjunto de
bibliotecas.Como ya
se mencionó anteriormente, Java es algo más que un lenguaje. La programación de
aplicaciones con Java se basa no solo en el empleo del juego de instrucciones
que componen el lenguaje, sino, fundamentalmente, en la posibilidad de utilizar
el amplísimo conjunto de clases que Sun pone a disposición del programador y
con las cuales es posible realizar prácticamente cualquier tipo de aplicación.
Lenguaje simple.Java posee una curva de aprendizaje muy
rápida. Resulta relativamente sencillo escribir applets interesantes desde el
principio. Todos aquellos familiarizados con C++ encontrarán que Java es más
sencillo, ya que se han eliminado ciertas características, como los punteros.
Debido a su semejanza con C y C++, y dado que la mayoría de la gente los conoce
aunque sea de forma elemental, resulta muy fácil aprender Java. Los
programadores experimentados en C++ pueden migrar muy rápidamente a Java y ser
productivos en poco tiempo.
Distribuido.Java proporciona una colección de clases
para su uso en aplicaciones de red, que permiten abrir sockets y establecer y
aceptar conexiones con servidores o clientes remotos, facilitando así la
creación de aplicaciones distribuidas.
Interpretado y compilado a la vez.Java es compilado, en la medida en que su
código fuente se transforma en una especie de código máquina, losbytecodes, semejantes a las instrucciones de
ensamblador. Por otra parte, es interpretado, ya que los bytecodes se pueden
ejecutar directamente sobre cualquier máquina a la cual se hayan portado el
intérprete y el sistema de ejecución en tiempo real (run-time).
Robusto.Java fue diseñado para crear software
altamente fiable. Para ello proporciona numerosas comprobaciones en compilación
y en tiempo de ejecución. Sus características de memoria liberan a los
programadores de una familia entera de errores (la aritmética de punteros), ya
que se ha prescindido por completo de los punteros, y la recolección de basura
elimina la necesidad de liberación explícita de memoria.
Seguro.Dada la naturaleza distribuida de Java,
donde las applets se bajan desde cualquier punto de la Red, la seguridad se
impuso como una necesidad de vital importancia. A nadie le gustaría ejecutar en
su ordenador programas con acceso total a su sistema, procedentes de fuentes
desconocidas. Así que se implementaron barreras de seguridad en el lenguaje y
en el sistema de ejecución en tiempo real.
Alto
rendimiento.
Multihebra.Hoy en día ya se ven como terriblemente
limitadas las aplicaciones que sólo pueden ejecutar una acción a la vez. Java
soporta sincronización de múltiples hilos de ejecución (multithreading) a nivel
de lenguaje, especialmente útiles en la creación de aplicaciones de red
distribuidas. Así, mientras un hilo se encarga de la comunicación, otro puede
interactuar con el usuario mientras otro presenta una animación en pantalla y
otro realiza cálculos.
Dinámico.El lenguaje Java y su sistema de ejecución
en tiempo real son dinámicos en la fase de enlazado. Las clases sólo se enlazan
a medida que son necesitadas. Se pueden enlazar nuevos módulos de código bajo
demanda, procedente de fuentes muy variadas, incluso desde la Red.
Produce
applets.Java
puede ser usado para crear dos tipos de programas: aplicaciones independientes
y applets. Las aplicaciones independientes se comportan como cualquier otro
programa escrito en cualquier lenguaje, como por ejemplo el navegador de Web
HotJava, escrito íntegramente en Java. Por su parte, las applets son pequeños
programas que aparecen embebidos en las páginas Web, como aparecen los gráficos
o el texto, pero con la capacidad de ejecutar acciones muy complejas, como
animar imágenes, establecer conexiones de red, presentar menús y cuadros de
diálogo para luego emprender acciones, etc.
Visual C++. También conocido como MSVC, Microsoft Visual C++, es un entorno de desarrollo integrado (IDE) para lenguajes de programación C, C++ y C++/CLI. Esta especialmente diseñado para el desarrollo y depuración de
código escrito para las API's de Microsoft Windows, DirectX y la tecnología Microsoft .NET Framework.
El IDE cuenta con herramientas
como el IntelliSense, RemoteDebuging, Editar y Continuar, y Texto Resaltado.
Cuenta con una versión Express,
llamada Microsoft Visual C++ Express Edition, la cual es gratuita y se puede
descargar desde el sitio de Microsoft.
El lenguaje de programación
utilizado por esta herramienta, de igual nombre, está basado en C++ y es compatible
en la mayor parte de su código con este lenguaje, a la vez que su sintaxis es
exactamente igual. En algunas ocasiones esta incompatibilidad impide que otros
compiladores, sobre todo en otros sistemas operativos, funcionen bien con
código desarrollado en este lenguaje.
Algunas de las nuevas
implementaciones es que el llamado código administrado (managed code), hace uso
deuna de las mejores
herramientas dentro de .NET, el recolector de basura (garbage
collector).