PROGRAMACIÓN ORIENTADA A OBJETOS
“AÑO DEL BUEN SERVICIO AL CIUDADANO”
INGENIERÍA DE
SISTEMAS Y TELEMÁTICA
LABORATORIO DE PROGRAMACIÓN I
PROGRAMACIÓN
ORIENTADA A OBJETOS
AUTORES
MARCHENA
HUANUIRE, Greinder Alexis
VASQUEZ
VENTURA, Liz Evelin
DOCENTE
PORRO
CHULLI, Marco Aurelio
BAGUA GRANDE -
AMAZONAS
2017
INTRODUCCIÓN
Es
importante aclarar desde un principio la diferencia que existe entre
programación orientada a objetos y un lenguaje orientado a objetos.
La
programación orientada a objetos es una “filosofía”, un modelo de programación,
con su teoría y su metodología, que conviene conocer y estudiar antes de nada.
Un lenguaje orientado a objetos es un lenguaje de programación que permite el
diseño de aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda
persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda
primero la “filosofía” (o adquiera la forma de pensar) y después el lenguaje,
porque “filosofía” sólo hay una y lenguajes muchos. En este documento veremos
brevemente los conceptos básicos de la programación orientada a objetos desde
un punto de vista global, sin particularizar para ningún lenguaje de
programación específico.
PROGRAMACIÓN ORIENTADA A OBJETOS
La
Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un
paradigma de programación que usa objetos y sus interacciones para diseñar
aplicaciones y programas de computadora. Está basado en varias técnicas,
incluyendo herencia, modularidad, polimorfismo, y encapsulamiento. Su uso se
popularizó a principios de la década de 1990. Actualmente son muchos los
lenguajes de programación que soportan la orientación a objetos.
El
término de Programación Orientada a Objetos indica más una forma de diseño y
una metodología de desarrollo de software que un lenguaje de programación, ya
que en realidad se puede aplicar el Diseño Orientado a Objetos (En inglés
abreviado OOD, Object Oriented Design), a cualquier tipo de lenguaje de
programación.
El
desarrollo de la OOP empieza a destacar durante la década de los 80 tomando en
cuenta la programación estructurada, a la que engloba y dotando al programador
de nuevos elementos para el análisis y desarrollo de software.
La
programación Orientada a objetos es una forma especial de programar, más
cercana a como expresaríamos las cosas en la vida real que otros tipos de
programación.
Con
la POO tenemos que aprender a pensar las cosas de una manera distinta, para
escribir nuestros programas en términos de objetos, propiedades, métodos y
otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña
base que permita soltarnos un poco con este tipo de programación.
La programación
orientada a objetos es una forma de programar que trata de encontrar una
solución a estos problemas. Introduce nuevos conceptos, que superan y amplían
conceptos antiguos ya conocidos. Entre ellos destacan los siguientes conceptos:
CONCEPTOS BÁSICOS
CLASE
Una
clase es una plantilla que define las variables y los métodos que son comunes
para todos los objetos de un cierto tipo. Por lo tanto, para que pueda haber
objetos, antes debe haberse definido las clases a las que pertenecerán dichos
objetos. No tiene sentido un objeto sin una clase, ya que el objeto tiene los
atributos de la clase a la que pertenece, y recibe mensajes correspondientes a
métodos de la clase a la que pertenece.
Una
clase se divide en una parte pública y en una parte privada. El nombre de la
clase debe ser único. Antes de continuar, recordar cómo era una librería (UNIT)
en Pascal. Tiene una parte donde se declaran las cabeceras de los subprogramas
(interfac) que podrán usarse desde los ficheros que usen la librería, y otra
parte donde se implementan dichos subprogramas (implementation).
Parte pública
Describe
a qué operaciones responden los objetos de una clase (cómo se comportan los
objetos). En esta parte de la clase se declaran las cabeceras de los métodos de
la clase que podrán ser "invocados" por los objetos. Es decir, si un
método se declara en la parte pública, podrá ser "invocado" por un
objeto de dicha clase, de lo contrario no podrá ser "invocado" por un
objeto. Es la parte "visible" de la clase, la interfaz de la clase.
Parte privada
Describe
los datos de la clase y cómo las operaciones manipulan dichos datos. Esta parte
de la clase es donde se oculta (encapsula) la información de la clase: datos e
implementación de métodos declarados o no en la parte pública de la clase. Es
una parte "no visible", cada objeto de una determinada clase tiene
sus atributos (datos) y sus métodos.
OBJETO
Un
objeto es un ejemplar concreto de una clase, como por ejemplo el curso de
metodología de la programación es un curso concreto dentro de todos los tipos
de cursos que pueden existir. Un objeto pertenece a una clase, por lo tanto
dispondrá de los atributos (datos) y operaciones (métodos) de la clase a la que
pertenece. Un objeto responde al comportamiento definido por las operaciones de
la clase a la que pertenece. Es decir, si la clase coche dispone del atributo
color y del método arrancar, un coche concreto tendrá un color, y podrá
arrancar, exclusivamente.
Un
objeto se puede ver como una "cápsula" de datos y algoritmos que
trabajan sobre esos datos. Un objeto no puede acceder directamente a sus datos
(atributos). Los atributos son sólo accesibles desde la implementación de los
métodos de una clase. Un objeto no puede "manipular" sus propios
datos, para ello están los métodos de la clase de dicho objeto: el
comportamiento (métodos) de un objeto puede variar el valor (estado) de sus
datos (atributos). Por ejemplo, nunca debemos hacer lo siguiente:
miCoche.color
:= 'rojo'.
Para
esto definiremos métodos que actualicen el valor de los atributos de un objeto,
por ejemplo:
miCoche.ponerColor('rojo').
En
la POO, un objeto no es algo "eterno", se instancian (crean) y se
destruyen. Una vez que se haya instanciado un objeto puede recibir mensajes.
Los objetos pueden instanciarse de forma estática o de forma dinámica (recordar
estos conceptos de capítulos anteriores). Un objeto estático comienza su
existencia una vez es declarado (instanciación de objetos estáticos), sin
embargo, un objeto dinámico no comienza su existencia al ser declarado, sino al
recibir un espacio de memoria (instanciación dinámica de objetos).
Los
objetos "se declararán" como atributos de las clases, en las
cláusulas van de los métodos o en la lista de parámetros de los métodos. El
único objeto que debe ser "declarado" en el programa principal será
el de la clase raíz de toda la jerarquía de clases (por cuestiones del lenguaje
Pascal orientado a objetos). Los objetos estáticos existen durante la ejecución
del programa. Los objetos dinámicos existen mientras no sean destruidos
(liberación de la memoria del objeto), mediante la sentencia dispone.
Tras
ser instanciado, un objeto consta de los atributos de la clase a la que
pertenece, y puede recibir mensajes. Dicho objeto determinará a qué método de
su clase corresponde dicho mensaje. Un objeto no podrá recibir mensajes
correspondientes a métodos de una clase a la que no pertenezca. Por ejemplo:
MENSAJE
Normalmente
un único objeto por sí solo no es muy útil. En general, un objeto aparece como
un componente más de un programa o una aplicación que contiene otros muchos
objetos. Es precisamente haciendo uso de esta interacción como los
programadores consiguen una funcionalidad de mayor orden y modelar comportamientos
mucho más complejos.
Los
objetos de un programa interactúan y se comunican entre ellos por medio de
mensajes. Cuando un objeto A quiere que otro objeto B ejecute una de sus
funciones miembro (métodos de B), el objeto A manda un mensaje al objeto B.
En
ocasiones, el objeto que recibe el mensaje necesita más información para saber
exactamente lo que tiene que hacer; por ejemplo, cuando se desea cambiar la
marcha de una bicicleta, se debe indicar la marcha a la que se quiere cambiar.
Esta información se pasa junto con el mensaje en forma de parámetro.
La
siguiente figura muestra las tres partes que componen un mensaje:
1.
El objeto al cual se manda el mensaje (TuBicicleta).
2.
El método o función miembro que debe ejecutar (CambiarDeMarcha).
3.
Los parámetros que necesita ese método (Marcha).
Estas
tres partes del mensaje (objeto destinatario, método y parámetros) son
suficiente información para que el objeto que recibe el mensaje ejecute el
método o la función miembro solicitada. Los mensajes proporcionan dos ventajas
importantes:
El
Objeto “Tú” manda el mensaje “CambiarDeMarcha” con el parámetro “Marcha” al
Objeto “TuBicicleta”. Cuando un objeto A quiere que otro objeto B ejecute una
de sus funciones miembro (métodos de B), el objeto A manda un mensaje al objeto
B.
- El comportamiento de un objeto está completamente determinado (a excepción del acceso directo a variables miembro públicas) por sus métodos, así que los mensajes representan todas las posibles interacciones que pueden realizarse entre objetos.
- Los objetos no necesitan formar parte del mismo proceso, ni siquiera residir en un mismo ordenador para mandarse mensajes entre ellos (y de esta forma interactuar).
HERENCIA
La
herencia es un mecanismo exigido a cualquier lenguaje que pretenda ser orientado
a objetos. Consideraremos la herencia como la transmisión de los métodos y
atributos de una clase a otra. Gracias a la herencia se pueden establecer
jerarquías entre clases. Establecer una jerarquía es un proceso subjetivo, que
depende del programador y de los matices de apreciación de cada uno.
La
herencia nos permite definir una jerarquía en la que existirán clases padre y
clases hijo, pudiendo ser una clase padre de otra clase, e hijo de otra clase a
la vez. No deben definirse jerarquías de herencia en la que una clase sea padre
e hijo de la misma clase. Existen 2 tipos de herencia: La herencia simple y la
herencia múltiple.
En
la herencia simple una clase sólo
puede tener una clase padre, en la herencia
múltiple, una clase puede tener más de una clase padre. Por ejemplo:
En
la siguiente figura se muestra una jerarquía de clases, con herencia simple de
2 clases vertebrado e invertebrado, que heredan de la clase serVivo.
En
la siguiente figura se muestra una jerarquía de clases, con herencia múltiple
de 1 clase hispano-argentino, que hereda de las clases español y argentino.
Cuando
una clase hereda de otra, la clase padre "transmite" todos sus
atributos y métodos a la clase hija.
MÉTODO
Son
las operaciones (acciones o funciones) que se aplican sobre los objetos y que
permiten crearlos, cambiar su estado o consultar el valor de sus atributos.
Los
métodos constituyen la secuencia de acciones que implementan las operaciones
sobre los objetos. La implementación de los métodos no es visible fuera de un
objeto.
Un
método puede producir un cambio en las propiedades del objeto, o la generación
de un "evento" con un nuevo mensaje para otro objeto del sistema.
La
sintaxis algorítmica de los métodos expresados como funciones y acciones es:
Para funciones se pueden usar cualquiera de
estas dos sintaxis:
<Modo de Acceso> Función <Nombre>
[(Lista Parámetros)]: <Descripción del Tipo de datos>
Para
acciones:
<Modo de Acceso> Acción <Nombre>
[(Lista Parámetros)] donde los parámetros son opcionales.
ATRIBUTOS
Características
que aplican al objeto solo en el caso en que él sea visible en pantalla por el
usuario; entonces sus atributos son el aspecto que refleja, tanto en color,
tamaño, posición, si está o no habilitado.
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.
PROPIEDAD O ATRIBUTO
Contenedor
de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace
los datos visibles desde fuera del objeto y esto se define como sus
características predeterminadas, y cuyo valor puede ser alterado por la
ejecución de algún método.
EVENTOS
Son
aquellas acciones mediante las cuales el objeto reconoce que se está
interactuando con él. De esta forma el objeto se activa y responde al evento
según lo programado en su código.
Es
un suceso en el sistema (tal como una interacción del usuario con la máquina, o
un mensaje enviado por un objeto). El sistema maneja el evento enviando el
mensaje adecuado al objeto pertinente. También se puede definir como evento la
reacción que puede desencadenar un objeto; es decir, la acción que genera.
INSTANCIA
Se
llama instancia a todo objeto que derive de algún otro. De esta forma, todos
los objetos son instancias de algún otro, menos la clase Object que es la madre
de todas.
ESTADO INTERNO
Es
una variable que se declara privada, que puede ser únicamente accedida y
alterada por un método del objeto, y que se utiliza para indicar distintas
situaciones posibles para el objeto (o clase de objetos). No es visible al
programador que maneja una instancia de la clase.
SOBRECARGA
La
sobrecarga consiste en poder crear un mismo método tantas veces como se quiera,
pero han de tener diferentes "lista de argumentos", es decir, yo
puedo crear un método:
public
void unMetodo(){
//código
}
Y
lo podemos sobrecargar de la siguiente manera:
public
void unMetodo(int x){
//código
}
Como
veis, el método es el mismo, se llaman igual, pero tienen diferente lista de
argumentos. Estas distintas versiones pueden estar en una misma clase o
repartidos entre esta y su "superclase".
Un
método sobrecargado puede tener.
- Diferente tipo de retorno.
- Diferentes modificadores de acceso.
- Lanzar diferentes excepciones.
CLASES ABSTRACTAS
Las
clases abstractas, las cuales declaran con la palabra clave abstract, no se
pueden crear instancias. Sólo puede ser utilizado como un super-clase para otras
clases que amplían la clase abstracta. Clase abstracta es el concepto e
implementación se completó cuando está siendo realizado por una subclase.
Además de esta clase sólo puede heredar de una clase abstracta (pero una clase
puede implementar muchas interfaces) y tendrá prioridad sobre todos los métodos
abstractos / propiedades y puede reemplazar los métodos virtuales /
propiedades.
CARACTERÍSTICAS
LA ABSTRACCIÓN
Consiste
en la generalización conceptual de un determinado conjunto de objetos y de sus
atributos y propiedades, dejando en un segundo término los detalles concretos
de cada objeto. ¿Qué se consigue con la abstracción? Bueno, básicamente pasar
del plano material (cosas que se tocan) al plano mental (cosas que se piensan).
Cuando
montamos un ordenador ensamblamos los componentes necesarios para construir el
ordenador. Utilizamos una placa base, un disco duro, memoria, etc. Manejamos
estos dispositivos a un nivel funcional. Es decir, abstraemos las funciones de
cada dispositivo para trabajar con ellos. En ningún momento nos paramos a
pensar cómo funcionan internamente o de cuántos condensadores y transistores
está compuesto.
La
abstracción es una herramienta muy potente en programación, pues reduce
considerablemente el trabajo de implementación y aumenta la portabilidad del
código. La programación orientada a objetos aporta elementos para abstraer el
problema en dos sentidos:
- Por un lado nos permite referirnos a objetos para representar la realidad, describiendo el problema en términos del problema en lugar de en términos de la solución. En un programa de gestión comercial, tendremos el objeto cliente o el objeto factura, que no son más que representaciones de otros objetos en el espacio del problema.
- La clave de la programación orientada a objetos está en abstraer los métodos y los datos comunes a un conjunto de objetos y agruparlos en una clase. Gracias a este nivel de abstracción, añadir o eliminar un objeto nuevo supondrá muy poco esfuerzo.
ENCAPSULAMIENTO
Significa
reunir todos los elementos que pueden considerarse pertenecientes a una misma
entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión
(diseño estructurado) de los componentes del sistema. Algunos autores confunden
este concepto con el principio de ocultación, principalmente porque se suelen
emplear conjuntamente.
Se
refiere a la capacidad de agrupar y condensar en un entorno con límites
bien-definidos distintos elementos. Cuando hablamos de encapsulación en general
siempre nos referiremos a encapsulación abstracta. De manera informal, primero
generalizamos (la abstracción) y luego decimos: la generalización está bien,
pero dentro de un cierto orden: hay que poner límites (la encapsulación), y
dentro de esos límites vamos a meter, a saco, todo lo relacionado con lo abstraído:
no sólo datos, sino también métodos, comportamientos, etc.
Por
un lado es una abstracción pues, de acuerdo con la definición establecida
anteriormente, es en ésta donde se definen las propiedades y atributos
genéricos de determinados objetos con características comunes.
La
Clase es, por otro lado, una encapsulación porque constituye una cápsula o saco
que encierra y amalgama de forma clara tanto los datos de que constan los
objetos como los procedimientos que permiten manipularlos. Las Clases se
constituyen, así, en abstracciones encapsuladas.
POLIMORFISMO
Esta
característica permite definir distintos comportamientos para un método
dependiendo de la clase sobre la que se realice la implementación. En todo
momento tenemos un único medio de acceso, sin embargo se podrá acceder a
métodos distintos.
O,
dicho de otro modo, las referencias y las colecciones de objetos pueden
contener objetos de diferentes tipos, y la invocación de un comportamiento en
una referencia producirá el comportamiento correcto para el tipo real del
objeto referenciado. Cuando esto ocurre en "tiempo de ejecución",
esta última característica se llama asignación tardía o asignación dinámica.
Algunos lenguajes proporcionan medios más estáticos (en "tiempo de
compilación") de polimorfismo, tales como las plantillas y la sobrecarga
de operadores de C++.
El
polimorfismo se puede establecer mediante la sobrecarga de identificadores y
operadores, la ligadura dinámica y las funciones virtuales. El término
sobrecarga se refiere al uso del mismo identificador u operador en distintos
contextos y con distintos significados.
La
sobrecarga de funciones conduce a que un mismo nombre pueda representar
distintas funciones con distinto tipo y número de argumentos. En el ámbito de
la OOP, la sobrecarga de funciones equivale a que un mismo mensaje puede ser
enviado a objetos de diferentes clases de forma que cada objeto respondería al
mensaje apropiadamente.
La
sobrecarga de operadores permite, por otro lado, el desarrollo de un código más
coherente, como especialización de la sobrecarga de funciones, posibilitando la
re-definición (para tipos de datos definidos-por-el-usuario) de las operaciones
realizadas por éstos (+, -, *, >, etc.). Esto es, ocurre lo mismo que en la
sobrecarga de funciones, pero aquí, en vez de identificadores de funciones,
tenemos operadores.
MODULARIDAD
Se
denomina "modularidad" a la propiedad que permite subdividir una
aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales
debe ser tan independiente como sea posible de la aplicación en sí y de las
restantes partes. Estos módulos se pueden compilar por separado, pero tienen
conexiones con otros módulos. Al igual que la encapsulación, los lenguajes
soportan la modularidad de diversas formas.
PRINCIPIO DE
OCULTACIÓN
Cada
objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto
expone una "interfaz" a otros objetos que especifican cómo pueden
interactuar con los objetos de la clase. El aislamiento protege a las
propiedades de un objeto contra su modificación por quien no tenga derecho a
acceder a ellas; solamente los propios métodos internos del objeto pueden
acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado
interno de un objeto de manera inesperada, eliminando efectos secundarios e
interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un
acceso directo a los datos internos del objeto de una manera controlada y
limitando el grado de abstracción. La aplicación entera se reduce a un agregado
o rompecabezas de objetos.
COHESIÓN
Cohesión
es “Es la medida de cuanto una entidad (componente o clase) se encuentra
especializada en propósito único dentro de un sistema”.
INTERFACES
Una
interface se compone de “Un conjunto de operaciones que caracterizan el
comportamiento de un elemento”. Todos los métodos definidos en una interface
son public abstract. En resumen, la interface separa la aplicación y define la
estructura, y este concepto es muy útil en los casos donde se necesita la
aplicación para ser intercambiables. Aparte de que una interface es muy útil
cuando la aplicación cambia con frecuencia. Algunos dicen que debe definir
todas las clases en términos de interfaces, pero creo que la recomendación
parece un poco extremo.
ACOPLAMIENTO
El
acoplamiento mide el grado de relacionamiento de un módulo con los demás. A
menor acoplamiento, mejor: el módulo en cuestión será más sencillo de diseñar,
programar, probar y mantener. En el diseño estructurado, se logra bajo
acoplamiento reduciendo las interacciones entre procedimientos y funciones,
reduciendo la cantidad y complejidad de los parámetros y disminuyendo al mínimo
los parámetros por referencia y los efectos colaterales. Una clase, en cambio,
tendrá bajo acoplamiento cuando tenga la menor dependencia posible de otras
clases. Esta dependencia significa que (si bien puede haber muchas clases que
dependen de una) debería haber pocas dependencias hacia otras clases desde una
sola.
ASOCIACIÓN
Es
una relación entre dos clases. Permite que una instancia de objeto de causar
otro para llevar a cabo una acción en su nombre. Asociación es el término más
general que define la relación entre dos clases, donde como la agregación y la
composición son relativamente especial. Ejemplo: En este caso podemos decir que
existe una asociación entre StudentRegistrar y RecordManager o existe una relación
direccional de StudentRegistrar a RecordManager o StudentRegistrar utilizar una
RecordManager. Puesto que se especifica explícitamente una dirección, en este
caso, la clase del controlador es la StudentRegistrar.
PROGRAMACIÓN ORIENTADA A OBJETOS EN VISUAL BASIC
Los
objetos son el elemento central de la programación en Visual Basic. Los
formularios y controles son objetos. Las bases de datos son objetos. Si ha
usado Visual Basic durante algún tiempo, o si ha trabajado con los ejemplos de
la documentación, ya han programado con objetos, pero hay mucho más en lo que
se refiere a objetos de lo que ha visto hasta aquí.
En
los siguientes temas, verá lo fácil que resulta crear objetos propios a partir
de las clases que defina, así como utilizar objetos para simplificar la
creación de código y aumentar su reutilización.
INTRODUCCIÓN A LOS
OBJETOS EN VISUAL BASIC
Un
objeto es una estructura que contiene la información y los métodos que
manipulan los datos. Casi todas las tareas realizadas en Visual Basic están
asociadas con objetos. Si no tiene experiencia en programación orientada a
objetos, los siguientes términos y conceptos le ayudarán a comenzar.
CLASES Y OBJETOS
Las
palabras "clase" y "objeto" se usan con tanta frecuencia en
la programación orientada a objetos que es fácil confundir los términos. En
general, una clase es una representación abstracta de algo, mientras que un
objeto es un ejemplo utilizable de lo que representa la clase. La única
excepción a esta regla la constituyen los miembros de clases compartidas, que
pueden utilizarse en instancias de una clase y en variables de objeto
declaradas como tipo de la clase.
CAMPOS,
PROPIEDADES, MÉTODOS Y EVENTOS
Los
campos y propiedades representan información que contiene un objeto. Los
campos se parecen a las variables ya que se pueden leer y establecer
directamente. Por ejemplo, si tiene un objeto denominado "Car",
podría almacenar su color en un campo denominado "Color".
Las
propiedades se recuperan y
establecen como los campos, pero se implementan mediante los procedimientos
propiedad Get y Set, que proporcionan más control sobre la forma en que los
valores se establecen o se devuelven. El nivel de direccionamiento indirecto
entre el valor que se va a almacenar y los procedimientos que lo usan ayuda a
aislar los datos y permite validar valores antes de asignarlos o recuperarlos.
Los
métodos representan acciones que un
objeto puede realizar.
Por
ejemplo, un objeto "Car" podría tener los métodos
"StartEngine", "Drive" y "Stop". Los métodos se
definen agregando procedimientos, ya sean rutinas o funciones Sub, a la clase.
Los
eventos son notificaciones que un
objeto recibe de, o transmite a, otros objetos o aplicaciones. Los eventos
permiten a los objetos realizar acciones siempre que se produce un
acontecimiento específico.
Un
ejemplo de evento para la clase "Car" sería un evento
"Check_Engine". Puesto que Microsoft Windows es un sistema controlado
por eventos, éstos pueden proceder de otros objetos, aplicaciones o entradas de
usuario realizadas al hacer clic con el mouse (ratón) o al presionar teclas.
Los
campos, propiedades, métodos y eventos son solamente la mitad de la ecuación de
la programación orientada a objetos. Para que la programación orientada a
objetos sea auténtica los objetos deben admitir tres cualidades: encapsulación,
herencia y polimorfismo.
ENCAPSULACIÓN,
HERENCIA Y POLIMORFISMO
La
encapsulación significa que un grupo
de propiedades, métodos y otros miembros relacionados se tratan como si de una
sola unidad u objeto se tratase. Los objetos pueden controlar cómo se cambian
propiedades o se ejecutan métodos. Por ejemplo, un objeto puede validar valores
antes de permitir cambios en la propiedad. La encapsulación, además, facilita
la posibilidad de realizar cambios en la implementación pasado algún tiempo,
mediante una actividad denominada ocultación de datos que permite ocultar los
detalles de implementación de los objetos.
Herencia
describe la posibilidad de crear nuevas clases basadas en una clase existente.
La nueva clase hereda todas las propiedades, métodos y eventos de la clase
base, y puede personalizarse con propiedades y métodos adicionales.
Por
ejemplo, puede crear una nueva clase denominada "Truck" basada en la
clase "Car". La clase "Truck" hereda la propiedad
"Color" de la clase "Car" y puede tener propiedades
adicionales como "FourWheelDrive".
Polimorfismo
significa que puede tener múltiples clases que se pueden utilizar de forma
intercambiable, si bien cada clase implementa las mismas propiedades o los
mismos métodos de maneras diferentes. El polimorfismo es importante en la
programación orientada a objetos puesto que permite usar elementos que tienen
el mismo nombre, independientemente del tipo de objeto que se esté utilizando
en ese momento.
Por
ejemplo, dada una clase base "Car", el polimorfismo permite al
programador definir diferentes métodos "StartEngine" para cualquier
número de clases derivadas. El método "StartEngine" de una clase
derivada denominada "DieselCar" puede ser totalmente diferente del
método con el mismo nombre en la clase base. Otros procedimientos o métodos
pueden usar el método "StartEngine" de las clases derivadas de la
misma forma, con independencia del tipo de objeto "Car" que se esté
utilizando en ese momento.
SOBRECARGA,
REEMPLAZO Y SOMBREADO
La
sobrecarga, el reemplazo y el sombreado son conceptos similares que pueden
confundirse fácilmente. Aunque las tres técnicas permiten crear miembros con el
mismo nombre, existen algunas diferencias importantes.
Los
miembros sobrecargados se utilizan
para proporcionar diferentes versiones de una propiedad o método que tienen el
mismo nombre, pero que aceptan un número diferente de parámetros, o parámetros
con diferentes tipos de datos.
Las
propiedades y métodos reemplazados
se utilizan para reemplazar una propiedad o método heredados que no son
apropiados en una clase derivada. Los miembros reemplazados deben aceptar el
mismo tipo de datos y número de argumentos. Las clases derivadas heredan los
miembros reemplazados.
Los
miembros sombreados se utilizan para
reemplazar localmente un miembro que tiene un ámbito más amplio. Cualquier tipo
puede sombrear cualquier otro tipo. Por ejemplo, puede declarar una propiedad
que sombree un método heredado con el mismo nombre. Los miembros sombreados no
se pueden heredar.
RESÚMEN
La
programación orientada a objetos es un paradigma que utiliza objetos como
elementos fundamentales en la construcción de la solución. Surge en los años
70.
Un
objeto es una abstracción de algún hecho o ente del mundo real que tiene
atributos que representan sus características o propiedades y métodos que
representan su comportamiento o acciones que realizan.
Todas
las propiedades y métodos comunes a los objetos se encapsulan o se agrupan en
clases. Una clase es una plantilla o un prototipo para crear objetos; por eso
se dice que los objetos son instancias de clases.
ABSTRACT
Object-oriented
programming is a paradigm that uses objects as fundamental elements in the
construction of the solution. It appears in the 70s.
An
object is an abstraction of some fact or entity of the real world that has
attributes that represent its characteristics or properties and methods that
represent its behavior or actions that perform.
All
properties and methods common to objects are encapsulated or grouped into
classes. A class is a template or a prototype to create objects; This is why
objects are said to be class instances.
RECOMENDACIONES
PARA TRABAJAR CON POO
·
En el caso de que un programa matemático
quiera calcular el área de otras figuras además de cuadrados, como por ejemplo
un círculo, es necesario utilizar la "Herencia".
·
Recomendamos elegir el entorno de
Programación dependiendo al tipo de aplicación a desarrollar.
·
El programador debe darse cuenta que todo
se codifica a mano y puede llevarse más tiempo escribirla que una solución
diseñada en el enfoque Visual Basic o VB/COM.
·
Si la aplicación involucra operaciones
con base de datos, interfaces web u
otras tareas de negocio, la opción ideal es Visual Basic.
CONCLUSIONES
·
Podemos dar a conocer de una forma
sencilla los mecanismos que se usan en este nivel de programación, a personas
que deseen una explicación rápida y sencilla de lo que es la programación
orientada a objetos.
·
La programación orientada a objetos
permite la optimización del código generado gracias a que mediante técnicas de
herencia, atributos estáticos entre otros permiten, que el código sea genérico
de manera que sea reutilizable.
VENTAJAS Y
DESVENTAJAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS
Vamos a ver las ventajas más
importantes de la programación orientada a objetos:
·
Reusabilidad.
Cuando hemos diseñado adecuadamente las clases, se pueden usar en distintas
partes del programa y en numerosos proyectos.
·
Mantenibilidad.
Debido a la sencillez para abstraer el problema, los programas orientados a
objetos son más sencillos de leer y comprender, pues nos permiten ocultar
detalles de implementación dejando visibles sólo aquellos detalles más
relevantes.
·
Modificabilidad.
La facilidad de añadir, suprimir o modificar nuevos objetos nos permite hacer
modificaciones de una forma muy sencilla.
·
Fiabilidad.
Al dividir el problema en partes más pequeñas podemos probarlas de manera
independiente y aislar mucho más fácilmente los posibles errores que puedan
surgir.
La programación orientada a objetos
presenta también algunas desventajas como pueden ser:
·
Cambio en la forma de pensar de la
programación tradicional a la orientada a objetos.
·
La ejecución de programas orientados a
objetos es más lenta.
·
La necesidad de utilizar bibliotecas de
clases obliga a su aprendizaje y entrenamiento.
AQUÍ UN VÍDEO SOBRE CLASES Y OBJETOS DE LA POO:
AQUÍ UN VÍDEO SOBRE QUE ES LA POO:
AQUÍ LES DEJAMOS EL LINK DE NUESTRAS DIAPOSITIVAS:
BIBLIOGRAFÍA
Abellán, B. (27 de Octubre de 2012). blogspot.pe. Obtenido de blogspot.pe: http://picarcodigo.blogspot.pe/2012/10/sobreescritura-y-sobrecarga-de-metodos.html
Alejo. (11 de SEPTIEMBRE de 2007). blogspot.pe. Obtenido de blogspot.pe: http://apdaza-poo.blogspot.pe/2007/09/conceptos-bsicos-de-poo.html
Camacho, J. (13 de Mayo de 2009). es.slideshare.net. Obtenido de es.slideshare.net:https://es.slideshare.net/javiersegura/programacion-orientada-a-objetos-1431389
Carballo, Y. (05 de Octubre de s.a). webdelprofesor.ula.ve. Obtenido de webdelprofesor.ula.ve: http://webdelprofesor.ula.ve/ingenieria/hyelitza/materias/programacion2/oxo/ProfaYusneyi_Tema8_POOClasesyObjetos.pdf
Gonzalez. (s.f). wordpress.com. Obtenido de wordpress.com: https://algonzalezpoo.wordpress.com/que-es-poo/
Gonzalez. (s.f). wordpress.com. Obtenido de wordpress.com: https://algonzalezpoo.wordpress.com/caracteristicas-de-poo/
Henao, C. (19 de Mayo de 2013). blogspot.pe. Obtenido de blogspot.pe:http://codejavu.blogspot.pe/2013/05/conceptos-de-programacion-orientada.html
Izquierdo, L. R. (s.f). pdf.com. Obtenido de pdf.com: http://luis.izqui.org/resources/ProgOrientadaObjetos.pdf
juananruiz. (19 de septiembre de 2007). wordpress.com. Obtenido de wordpress.com:https://frameworkphp.wordpress.com/2007/09/19/definicion-de-programacion-orientada-a-objetos/
Karlytoz_36. (02 de Noviembre de 2012). es.slideshare.net. Obtenido de es.slideshare.net:https://es.slideshare.net/Karlytoz_36/programacin-orientada-a-objetos-15003678
Microsoft. (Noviembre de 2007). msdn.microsoft.com. Obtenido de msdn.microsoft.com: https://msdn.microsoft.com/es-es/library/b86b82w0(v=vs.90).aspx
Microsoft. (Noviembre de 2007). msdn.microsoft.com. Obtenido de msdn.microsoft.com:https://msdn.microsoft.com/es-es/library/zztsbwsx(v=vs.90).aspx
Reyes, J. L. (09 de Marzo de 2014). es.slideshare.net. Obtenido de es.slideshare.net:https://es.slideshare.net/josuelara792197/conceptos-de-poo-programacion-orientada-a-objetos
Roldán, Á. (s.f). ciberaula.com. Obtenido de ciberaula.com: http://www.ciberaula.com/articulo/ventajas_poo
Roldán, Á. (s.f). ciberaula.com. Obtenido de ciberaula.com: http://www.ciberaula.com/articulo/polimorfismo
Roldán, Á. (s.f). ciberaula.com. Obtenido de ciberaula.com: http://www.ciberaula.com/articulo/abstraccion
Roldán, Á. (s.f). ciberaula.com. Obtenido de ciberaula.com: http://www.ciberaula.com/articulo/clase
Roldán, Á. (s.f). ciberaula.com. Obtenido de ciberaula.com: http://www.ciberaula.com/articulo/herencia
Roldán, Á. (s.f). ciberaula.com. Obtenido de ciberaula.com: http://www.ciberaula.com/articulo/objeto
UPV. (s.f). www.upv.es. Obtenido de www.upv.es: http://www.upv.es/amiga/43.htm
WikiLibros. (02 de Marzo de 2017). es.wikibooks.org. Obtenido de es.wikibooks.org:https://es.wikibooks.org/wiki/Programaci%C3%B3n_Orientada_a_Objetos/Conceptos_Fundamentales
Wikipedia. (20 de Abril de 2017). es.wikipedia.org. Obtenido de es.wikipedia.org:https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos






Gracias por su aporte de investigación. Saludos
ResponderEliminar