Trabajo Programación Orientada A Objetos
Trabajo Programación Orientada A Objetos
Las ideas básicas de la orientación a objetos nacen a principios de los años 60 en la universidad de
Noruega. Un equipo dirigi-do por el Dr. Nygaard se dedicaba a desarrollar sistemas infor-máticos
para realizar simulaciones de sistemas físicos como simular el funcionamiento y obtener el
rendimiento de un motor. La dificultad en la que se encontraban era doble. Por un lado los
programas eran muy complejos y, por otro, forzosamente tenian que ser muy modificados. Este
segundo punto era especialmente problemático, ya que la razón de ser de los programas era el
cambio y no sólo se requerían varias iteraciones para obtener un producto con el rendimiento
deseado, sino que muchas veces se querían obtener diversas alternativas viables cada una con sus
ventajas e inconvenientes.
La solución que idearon fue diseñar el programa paralelamente al objeto físico. Es decir, si el objeto
físico tenía cien componentes, el programa también tendría cien módulos, uno por cada pieza.
Partiendo el programa de esta manera, había una total correspondencia entre el sistema físico y el
sistema informático. Así, cada pieza física tenía su abstracción informática en un módulo. De la
misma manera que los sistemas físicos se comunican enviándose señales, los módulos informáticos
se comunicarían enviándose mensajes.
Este enfoque resolvió los dos problemas planteados. Primeramente, ofrecía una forma natural de
partir un programa muy complejo y, en segundo lugar, el mantenimiento pasaba a ser controlable.
El primer punto es obvio ya que, al partir el programa en unidades informáticas paralelas a las
físicas, la descomposición es automática. El segundo punto también se resuelve ya que, a cada
iteración de simulación, el analista querrá cambiar o bien piezas enteras o bien el comportamiento
de alguna pieza. En ambos casos la localización de los cambios está perfectamente clara y su
alcance se reduce a un componente, siempre y cuando el interfaz del mismo no cambie. Por
ejemplo, si se estuviese simulando un motor o coche, puede que se quisiera modificar el delco
utilizado en la simulación anterior. Si el nuevo delco tuviera la misma interfaz (mismos inputs y
outputs) o se cambiase sólo su comportamiento interno, nada del sistema (fuera del delco) estaría
afectado por el cambio.
Pero, poco a poco, fue obteniendose otro beneficio muy importante, que es la razón principal por la
que la industria informática se ha abocado a la orientación a objetos. Se trata de la reusabilidad. En
el proceso de construcción de un programa se obtienen piezas para futuros programas. Avanzando
algunas cifras, se puede indicar que los niveles de reutilización de software pasan del 5-15% en
centros no orientados a objetos, a niveles por encima del 80%.
Para implementar estas ideas lo que se hizo fue crear un lenguaje para darle soporte, Simula-67, que
continua utilizándose actualmente.
El siguiente paso se da en los años 70 en los Estados Unidos. Xerox tiene un centro de investigación
en Plo Alto, donde trabajan en conceptos que puedan convertirse en productos industriales al cabo
de 10 a 20 años. Así pues, en aquellos años contrataron a un joven llamado Alan Kay para que
llevase a término las ideas que proponía en su tesis doctoral, la propuesta de construcción de un
ordenador llamado Dynabook, adecuado para ser utilizado por niños. El ordenador no tenía teclado,
la pantalla era sensible al tacto y la mayor parte de la comunicación era gráfica. Al desarrollar este
proyecto se inventó el 'mouse' y los entornos gráficos. Al volver a encontrarse con una progra-
mación compleja y experimental, como en el caso de Nygaard, decidieron crear un entorno y
lenguaje llamado Smalltalk.
Smalltalk tuvo una gran difusión y cuando en los años 80 en ATT-Bell quisieron crear un sucesor al
lenguaje C, incorporaron las principales ideas de Smalltalk y de Simula, creando el lenguaje C++.
Puede afirmarse que se debe a este último la gran extensión de los conceptos de la orientación a
objetos.
Conviene subrayar que el desarrollo que hemos descrito se refiere sólo a la evolución que ha tenido
la orientación a objetos en el mundo de la ingeniería del software. Ha existido un desarrollo paralelo
de los mismos conceptos en el mundo de la inteligencia artificial, donde el lenguaje CLOS, una
variante de Lisp orientada a objetos, está enormemente extendido.
http://www2.ati.es/novatica/1995/mar-abr/n114obje.html
VENTAJAS DESVENTAJAS
Que son: Es una clase de uso específico, lista para usar, que puede ser configurada o
utilizada de forma visual, desde el entorno de desarrollo.
La principal diferencia, respecto a una clase normal, es que la mayor parte del trabajo lo
podemos hacer de forma visual, con el ratón y ajustando las opciones que se nos ofrece en
nuestro entorno.
Visuales: Son aquellos que, al utilizarlos, muestran algún elemento (o dibujo) en la pantalla
y es el usuario de nuestros programas el que interactúa con él. El componente es el
principal responsable de dibujar en la pantalla lo que sea oportuno, dependiendo de su
estado, del valor de sus atributos, etc. Hay muchos componentes de este tipo, como pueden
ser los botones (TButton), etiquetas de texto (TLabel), formas (TShape), etc.
Propiedades: Son datos públicos del componente, muy parecidas a los atributos de
una clase, aunque se accede a ellas a través de dos métodos: un método para leer su
valor, y otro para modificarlo. Existen propiedades de sólo lectura, en las que
podemos consultar pero no modificar su valor, y propiedades de sólo escritura.
Eventos: Son funciones del componente, que se ejecutarán automáticamente
cuando ocurra “algo importante”. Un programador puede poner el código que
quiera en el evento, para así poder hacer una acción cuando ese “algo importante”
ocurra.
Métodos: Son funciones, que permiten realizar acciones. Normalmente, se utilizan
métodos para dos tareas distintas: realizar algo importante (como repintar en
pantalla, cambiar el foco o algo así), o para establecer el valor de los atributos
internos, haciendo algún tipo de comprobación previa. Como las propiedades
pueden ser leídas o escritas a través de métodos, a veces es equivalente la llamada a
un método y el cambio de una propiedad
Atributos: Tienen la misma misión que en programación orientada a objetos, es
decir: almacenar datos internos al objeto (o clase). En el maravilloso mundo de los
componentes, los atributos siempre son internos y de uso privado, y debemos
utilizar las propiedades para que un programador pueda leer o establecer un dato.
1. https://msdn.microsoft.com/es-co/library/bb972232.aspx
2. http://novella.mhhe.com/sites/dl/free/8448156315/540597/Cap_Muestra_Joyanes_8448156
315.pdf
4. Lenguajes de Programación: Los lenguajes de programación orientadas a objetos son
lenguajes dinámicos en los que estos objetos se pueden crear y modificar sobre la marcha.
Esta programación orientada a objetos (POO) tomo auge a mediados de los años ochenta
debido a la propagación de las interfaces gráficas de usuarios, para lo que los lenguajes de
programación orientados a objetos están especialmente dotados.
Los principales lenguajes de programación orientados a objetos son:
Ada, C++, C#, VB.NET, Clarion, Delphi, Eiffel, Java, Lexico (en castellano), Objective-C,
Ocaml, Oz, PHP, PowerBuilder, Python, Ruby y Smalltalk.
http://www.larevistainformatica.com/lenguajes-programacion-orientada-
objetos.htm
5. UML: El Lenguaje Unificado de Modelado (UML) fue creado para forjar un lenguaje de
modelado visual común y semántica y sintácticamente rico para la arquitectura, el diseño y
la implementación de sistemas de software complejos, tanto en estructura como en
comportamiento. UML tiene aplicaciones más allá del desarrollo de software, p. ej., en el
flujo de procesos en la fabricación.
Es comparable a los planos usados en otros campos y consiste en diferentes tipos de
diagramas. En general, los diagramas UML describen los límites, la estructura y el
comportamiento del sistema y los objetos que contiene.
UML no es un lenguaje de programación, pero existen herramientas que se pueden usar
para generar código en diversos lenguajes usando los diagramas UML. UML guarda una
relación directa con el análisis y el diseño orientados a objetos
UML y su función en el modelado y diseño orientado a objetos: Hay muchos
paradigmas o modelos para la resolución de problemas en la informática, que es el estudio
de algoritmos y datos. Hay cuatro categorías de modelos para la resolución de problemas:
lenguajes imperativos, funcionales, declarativos y orientados a objetos (OOP). En los
lenguajes orientados a objetos, los algoritmos se expresan definiendo 'objetos' y haciendo
que los objetos interactúen entre sí. Esos objetos son cosas que deben ser manipuladas y
existen en el mundo real. Pueden ser edificios, artefactos sobre un escritorio o seres
humanos.
Los lenguajes orientados a objetos dominan el mundo de la programación porque modelan
los objetos del mundo real. UML es una combinación de varias notaciones orientadas a
objetos: diseño orientado a objetos, técnica de modelado de objetos e ingeniería de software
orientada a objetos.
UML usa las fortalezas de estos tres enfoques para presentar una metodología más
uniforme que sea más sencilla de usar. UML representa buenas prácticas para la
construcción y documentación de diferentes aspectos del modelado de sistemas de software
y de negocios
EJEMPLO:
https://www.lucidchart.com/pages/es/que-es-el-lenguaje-unificado-de-modelado-uml
6. EJEMPLO CODIGO DE FUENTE:
Haz una clase llamada Password que siga las siguientes condiciones:
Crea un bucle que cree un objeto para cada posición del array.
Crea otro array de booleanos donde se almacene si el password del array de Password es o
no fuerte (usa el bucle anterior).
contraseña2 valor_bololeano2
SOLUCION:
Clase Password
/**
* Clase Password
*
* Contiene una contraseña y una longitud
*
* @author Fernando
* @version 1.0
*/
public class Password {
//Constantes
/**
* Longitud por defecto
*/
private final static int LONG_DEF=8;
//Atributos
/**
* Longitud de la contraseña
*/
private int longitud;
/**
* caracteres de la contraseña
*/
private String contraseña;
//Metodos publicos
/**
* Devuelve la longitud
* @return longitud de la contraseña
*/
public int getLongitud() {
return longitud;
}
/**
* Modifica la longitud de la contraseña
* @param longitud a cambiar
*/
public void setLongitud(int longitud) {
this.longitud = longitud;
}
/**
* Devuelve la contraseña
* @return contraseña
*/
public String getContraseña() {
return contraseña;
}
/**
* Genera una contraseña al azar con la longitud que este definida
* @return contraseña
*/
public String generaPassword (){
String password="";
for (int i=0;i<longitud;i++){
//Generamos un numero aleatorio, segun este elige si añadir una minuscula, mayuscula o
numero
int eleccion=((int)Math.floor(Math.random()*3+1));
if (eleccion==1){
char minusculas=(char)((int)Math.floor(Math.random()*(123-97)+97));
password+=minusculas;
}else{
if(eleccion==2){
char mayusculas=(char)((int)Math.floor(Math.random()*(91-65)+65));
password+=mayusculas;
}else{
char numeros=(char)((int)Math.floor(Math.random()*(58-48)+48));
password+=numeros;
}
}
}
return password;
}
/**
* Comprueba la fortaleza de la contraseña
* @return
*/
public boolean esFuerte(){
int cuentanumeros=0;
int cuentaminusculas=0;
int cuentamayusculas=0;
//Vamos caracter a caracter y comprobamos que tipo de caracter es
for (int i=0;i<contraseña.length();i++){
if (contraseña.charAt(i)>=97 && contraseña.charAt(i)<=122){
cuentaminusculas+=1;
}else{
if (contraseña.charAt(i)>=65 && contraseña.charAt(i)<=90){
cuentamayusculas+=1;
}else{
cuentanumeros+=1;
}
}
}
//Si la constraseña tiene mas de 5 numeros, mas de 1 minuscula y mas de 2 mayusculas
if (cuentanumeros>=5 && cuentaminusculas>=1 && cuentamayusculas>=2){
return true;
}else{
return false;
}
}
//Constructores
/**
* Crea una contraseña al azar
*/
public Password (){
this(LONG_DEF);
}
/**
* La contraseña sera la pasada por parametro
* @param longitud
*/
public Password (int longitud){
this.longitud=longitud;
contraseña=generaPassword();
Conclusiones..........................................................................................34.
Bibliografía............................................................................................35.
Programación orienta a Objetos
Componentes
No es un lenguaje de programación,
pero existen herramientas que se
pueden usar para generar código en
Un paradigma de programación q diversos lenguajes usando los
ue usa objetos y sus Propiedades: Son diagramas UML. UML guarda una
interacciones, para datos públicos del relación directa con el análisis y el
diseñar aplicaciones y programas componente diseño orientados a objetos
informáticos
Eventos: Son
funciones del
componente, que se
Historia
ejecutarán
automáticamente