You are on page 1of 14

INGENIERIA DE SISTEMAS

CICLO :VI

Contenido
INTRODUCCIN.............................................................................................. 1
3. OBJETO...................................................................................................... 5
4. MENSAJE.................................................................................................... 6
5. CLASE......................................................................................................... 7
6. HERENCIA................................................................................................... 8

INTRODUCCIN
La invencin del mtodo de Monte Carlo se asigna a Stan Ulam y a John von
Neumann. Ulam ha explicado cmo se le ocurri la idea mientras jugaba un solitario

durante una enfermedad en 1946. El mtodo de Monte Carlo es un mtodo no


determinstico o estadstico numrico usado para aproximar expresiones matemticas
complejas y costosas de evaluar con exactitud.
Generalmente en estadstica los modelos aleatorios se usan para simular
fenmenos que poseen algn componente aleatorio. Pero en el mtodo
Monte Carlo, por otro lado, el objeto de la investigacin es el objeto en s
mismo, un suceso aleatorio o pseudo-aleatorio se usa para estudiar el
modelo.
El mtodo se llam as en referencia al Casino de Montecarlo(Principado de Mnaco)
por ser la capital del juego de azar, al ser la ruleta un generador simple de nmeros
aleatorios. El uso de los mtodos de Monte Carlo como herramienta de investigacin,
proviene del trabajo realizado en el desarrollo de la bomba atmica durante la segunda
guerra mundial en el Laboratorio Nacional de Los lamos en EUA.
La simulacin de Monte Carlo tambin fue creada para resolver integrales
que no se pueden resolver por mtodos analticos, para solucionar estas
integrales se usaron nmeros aleatorios. Posteriormente se utiliz para
cualquier esquema que emplee nmeros aleatorios, usando variables
aleatorias con distribuciones de probabilidad conocidas, el cual es usado
para resolver ciertos problemas estocsticos y determinsticos, donde el
tiempo no juega un papel importante.

2. Evolucin de los Lenguajes de Programacin


En sta secccin se describir brevemente como han evolucionado los lenguajes de
programacin, desde el lenguaje de mquina y ensamblador (Bajo Nivel) hasta los

lenguajes estructurados y orientados a objetos (Alto Nivel). Tambin se incluye la


evolucin desde el punto de vista de las generaciones.
2.1. Lenguajes de Bajo Nivel
2.1.1. Lenguaje Mquina
Es el lenguaje que entiende el procesador y est basado en el sistema binario[4]. Est
formado por un conjunto de instrucciones o cdigos que pueden ser interpretados
directamente por el procesador [5]. El lenguaje mquina vara dependiendo del
hardware y evoluciona con cada versin del CHIP. Cuando se habla del lenguaje
mquina en el IBM PC y compatibles, se habla principalmente de la familia de
procesadoresIntel 80xX y de su evolucin hasta el actual Pentium IV.
En cada versin del CHIP Intel se han agregado nuevas funcionalidades, pero Intel
siempre ha tratado de mantener la compatibilidad con las versiones anteriores, por lo
que se habla de que un programa es compatible con la Familia x86. Segn lo anterior,
un programa hecho para el 80x386 (Primera versin estable que soporta multi-tarea
[4]) debera funcionar aun en los ltimos Pentium IV de doble ncleo. La verdad es que
si funcionan, pero no utilizan las caractersticas nuevas del procesador.
La principal ventaja del lenguaje mquina es su alta velocidad, debida a la traduccin
inmediata de los cdigos binarios. Entre sus muchas debilidades encontramos [1]:

Codificacin compleja: el programador debe entender el significado de los unos


y ceros y tener tablas de instrucciones y variables. En los procesadores actuales
de 64bits, por ejemplo, una instruccin tiene 64 unos y ceros, lo cual es muy difcil
de controlar.

Errores en la codificacin y depuracin compleja: debido a la complejidad de


los cdigos.

Productividad mnima: tiempos de desarrollo muy altos


No portabilidad: un programa solo funciona sobre el hardware para el que es
hecho.

2.1.2. Lenguaje Ensamblador


Son una representacin ms entendible para el humano de los cdigos del lenguaje
mquina.Cada instruccin en lenguaje ensamblador representa una instruccin en el
lenguaje mquina [6]. El lenguaje ensamblador aparece casi a la par con el lenguaje
mquina, esto debido a que los fabricantes de hardware disean sus Chips pensando
ya en las instrucciones de un lenguaje de ensamblado.
Un ejemplo de una instruccin en lenguaje mquina y en lenguaje ensamblador:

Tabla 1: Ejemplo de Lenguaje Mquina vs. Lenguaje Ensamblador

Lenguaje Ensamblador
mov ax, 10

A pesar de que el lenguaje ensamblador es ms fcil de entender por las personas


sigue teniendo las desventajas del lenguaje de mquina. Realmente lo que hace es
ayudar un poco a que el cdigo sea ms legible. El lenguaje ensamblador
adicionalmente necesita un traductor (ensamblador) capaz de convertir dichos cdigos
en lenguaje mquina [1].
Ejemplos de ensambladores: TASM (Turbo Assembler de Borland), MASM (Microsoft
Macro Assembler), NASM (Netwide Assembler - Libre).

2.2. Lenguajes de Alto nivel


Son lenguajes ms afines con el programador en los que una instruccin puede
representar varias instrucciones en lenguaje mquina. Incluyen los lenguajes
estructurados y no estructurados. Como ejemplos tenemos: Basic, Pascal, C, APL,
FORTRAN (Aplicaciones Cientficas) [7], COBOL (para aplicaciones de procesamiento
de datos), LISP Y PROLOG (para Inteligencia Artificial), etc.
Los lenguajes de alto nivel necesitan de un traductor que puede ser interpretador o
compilador. Los interpretadores o intrpretes, necesitan de un programa auxiliar que
traduce en tiempo real las instrucciones al lenguaje mquina, por lo tanto, cada vez
que un programa interpretado se ejecuta debe ejecutarse tambin su interprete.
Ejemplos de lenguajes interpretados [7]: Basic, PROLOG, LISP, entre otros.
Los lenguajes compilados son aquellos que necesitan de un compilador para la
traduccin al lenguaje mquina. La traduccin o compilacin se hace solo una vez, y el
resultado es un cdigo objeto entendible por la mquina. Para ejecutar un programa
compilado no se necesita de su compilador. Ejemplos de lenguajes compilados:
Pascal, C, Fortran, Cobol, Modula-2 (evolucin del Pascal), etc.
Algunas de las caractersticas de los lenguajes de alto nivel [1]:

Depuracin ms sencilla: Debido a que el cdigo es ms legible, la depuracin


tambin se hace ms fcil. Con la ayuda editores (IDEs Entornos de Desarrollo
Integrados) la compilacin, depuracin y ejecucin se hacen ms fcilmente.

Productividad aceptable: son ms productivos que los lenguajes de alto nivel.

Algunos permiten la Portabilidad: generalmente los interpretados.

Los lenguajes estructurados, existen controles que le dan secuencia ordenada a la


ejecucin del cdigo. Dichos controles se implementan con estructuras definidas que
permiten bifurcaciones condicionadas o ciclos repetitivos. Los lenguajes estructurados
hacen que el programador desarrolle sus algoritmo disciplinadamente.
Una rama de los lenguajes de alto nivel son los lenguajes procedurales, donde la
unidad funcional es el procedimiento. Los procedimientos implementan la lgicade caja
negra donde existen unas entradas y unas salidas y al programador que usa el
procedimiento no le interesa su funcionamiento interno sino su funcionalidad.
Java y los lenguajes .Net de Microsoft tambin forman parte de los lenguajes de alto
nivel, pero para ste articulo es ms importante su clasificacin dentro de los
lenguajes Orientados a Objetos.

3. OBJETO
Un objeto no es ms que un conjunto de variables (o datos) y mtodos (o funciones)
relacionados entre s. Los objetos en programacin se usan para modelar objetos o
entidades del mundo real (el objeto hijo, madre, o farmacutica, por ejemplo). Un
objeto es, por tanto, la representacin en un programa de un concepto, y contiene toda
la informacin necesaria para abstraerlo: datos que describen sus atributos y
operaciones que pueden realizarse sobre los mismos. La siguiente figura muestra una
representacin visual de un objeto.

Representacin visual de un objeto


Los atributos del objeto (estado) y lo que el objeto puede hacer (comportamiento)
estn expresados por las variables y los mtodos que componen el objeto
respectivamente. Por ejemplo, un objeto que modelase una bicicleta en el mundo real
tendra variables que indicararan el estado actual de la bicicleta: su velocidad es de
20 km/h, su cadencia de pedaleo 90 r.p.m. y su marcha actual es la 5. Estas variables
se conocen formalmente como variables instancia o variables miembro porque
contienen el estado de un objeto bicicleta particular y, en programacin orientada a
objetos, un objeto particular se denomina una instancia.

Adems de estas variables, el objeto bicicleta podra tener mtodos para frenar,
cambiar la cadencia de pedaleo, y cambiar de marcha (la bicicleta no tendra que tener
un mtodo para cambiar su velocidad pues sta es funcin de la cadencia de pedaleo,
la marcha en la que est y de si los frenos estn siendo utilizados o no, entre otros
muchos factores). Estos mtodos se denominan formalmente mtodos

instancia o mtodos miembro, ya que cambian el estado de una instancia u objeto


bicicleta particular. La siguiente figura muestra una bicicleta modelada como un objeto:

El diagrama del objeto bicicleta muestra las variables objeto en el ncleo o centro del
objeto y los mtodos rodeando el ncleo y protegindolo de otros objetos del
programa. Este hecho de empaquetar o proteger las variables miembro con los
mtodos miembro se denominaencapsulacin. Este dibujo conceptual que muestra el
ncleo de variables miembro del objeto protegido por una membrana protectora de
mtodos o funciones miembro es la representacin ideal de un objeto y es el ideal que
los programadores de objetos suelen buscar. Sin embargo, debemos matizarlo. A
menudo, por razones prcticas, es posible que un objeto desee exponer alguna de sus
variables miembro, o proteger otras de sus propios mtodos o funciones miembro. Por
ejemplo, Java permite establecer 4 niveles de proteccin de las variables y de las
funciones miembro para casos como ste. Los niveles de proteccin determinan qu
objetos y clases pueden acceder a qu variables o a qu mtodos.

De cualquier forma, el hecho de encapsular las variables y las funciones miembro


relacionadas proporciona dos importantes beneficios a los programadores de
aplicaciones:

Capacidad de crear mdulos: El cdigo fuente de un objeto puede escribirse


y mantenerse independiente del cdigo fuente del resto de los objetos. De esta
forma, un objeto puede pasarse fcilmente de una parte a otra del programa.
Podemos dejar nuestra bicicleta a un amigo, y sta seguir funcionando.

Proteccin de informacin: Un objeto tendr una interfaz pblica


perfectamente definida que otros objetos podrn usar para comunicarse con l. De
esta forma, los objetos pueden mantener informacin privada y pueden cambiar el
modo de operar de sus funciones miembros sin que esto afecte a otros objetos
que usen estas funciones miembro. Es decir, no necesitamos entender cmo
funciona el mecanismo de cambio de marcha para hacer uso de l.

4. MENSAJE
Normalmente un nico objeto por s solo no es muy til. En general, un objeto aparece
como un componente ms de un programa o una aplicacin que contiene otros
muchos objetos. Es precisamente haciendo uso de esta interaccin como los

programadores consiguen una funcionalidad de mayor orden y modelar


comportamientos mucho ms complejos. Una bicicleta (a partir de ahora
particularizaremos) colgada de un gancho en el garaje no es ms que una estructura
de aleacin de titanio y un poco de goma. Por s sola, tu bicicleta (por poner una
bicicleta en concreto) es incapaz de desarrollar ninguna actividad. Tu bicicleta es
realmente til en tanto que otro objeto (t) interacta con ella (pedalea).

Los objetos de un programa interactan y se comunican entre ellos por medio de


mensajes. Cuando un objeto A quiere que otro objeto B ejecute una de sus funciones
miembro (mtodos de B), el objeto A manda un mensaje al objeto B.

En ocasiones, el objeto que recibe el mensaje necesita ms informacin 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
informacin se pasa junto con el mensaje en forma de parmetro.

La siguiente figura muestra las tres partes que componen un mensaje:


1.

El objeto al cual se manda el mensaje (TuBicicleta).

2.

El mtodo o funcin miembro que debe ejecutar (CambiarDeMarcha).

3.

Los parmetros que necesita ese mtodo (Marcha)

Estas tres partes del mensaje (objeto destinatario, mtodo y parmetros) son
suficiente informacin para que el objeto que recibe el mensaje ejecute el mtodo o la
funcin miembro solicitada. Los mensajes proporcionan dos ventajas importantes:

El comportamiento de un objeto est completamente determinado (a excepcin


del acceso directo a variables miembro pblicas) por sus mtodos, 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).

5. CLASE
Normalmente en el mundo real existen varios objetos de un mismo tipo, o como
diremos enseguida, de una misma clase. Por ejemplo, mi bicicleta es una de las
muchas bicicletas que existen en el mundo. Usando la terminologa de la

programacin orientada a objetos, diremos que mi bicicleta es una instancia de


la clase de objetos conocida como bicicletas. Todas las bicicletas tienen algunos
estados o atributos (color, marcha actual, cadencia actual, dos ruedas) y algunos
mtodos (cambiar de marcha, frenar) en comn. Sin embargo, el estado particular de
cada bicicleta es independiente del estado de las dems bicicletas. La particularizacin
de estos atributos puede ser diferente. Es decir, una bicicleta podr ser azul, y otra
roja, pero ambas tienen en comn el hecho de tener una variable color. De este
modo podemos definir una plantilla de variables y mtodos para todas las bicicletas.
Las plantillas para crear objetos son denominadas clases.

Una clase es una plantilla que define las variables y los mtodos que son comunes
para todos los objetos de un cierto tipo.

En nuestro ejemplo, la clase bicicleta definira variables miembro comunes a todas las
bicicletas, como la marcha actual, la cadencia actual, etc. Esta clase tambin debe
declarar e implementar los mtodos o funciones miembro que permiten al ciclista
cambiar de marcha, frenar, y cambiar la cadencia de pedaleo, como se muestra en la
siguiente figura:

Despus de haber creado la clase bicicleta, podemos crear cualquier nmero de


objetos bicicleta a partir de la clase. Cuando creamos una instancia de una clase, el
sistema reserva suficiente memoria para el objeto con todas sus variables miembro.
Cada instancia tiene su propia copia de las variables miembro definidas en la clase.

6. HERENCIA

Una vez que hemos visto el concepto de clase y el de objeto, estamos en condiciones
de introducir otra de las caractersticas bsicas de la programacin orientada a
objetos: el uso de la herencia.

El mecanismo de herencia permite definir nuevas clases partiendo de otras ya


existentes. Las clases que derivan de otras heredan automticamente todo su
comportamiento, pero adems pueden introducir caractersticas particulares propias
que las diferencian.

Como hemos visto, los objetos se definen a partir de clases. Con el mero hecho de
conocer a qu clase pertenece un objeto, ya se sabe bastante sobre l. Puede que no
sepamos lo que es la Espada, pero si nos dicen que es una bicicleta, ya sabremos
que tiene dos ruedas, manillar, pedales...

La programacin orientada a objetos va ms all, permitindonos definir clases a partir


de otras clases ya construidas. Por ejemplo, las bicicletas de montaa, las de carretera
y los tndems son todos, en definitiva, bicicletas. En trminos de programacin
orientada a objetos, son subclases o clases derivadas de la clase bicicleta.
Anlogamente, la clase bicicleta es la clase base o superclase de las bicicletas de
montaa, las de carretera y los tndems. Esta relacin se muestra en la siguiente
figura.

Cada subclase hereda los estados (en forma de declaracin de variables) de la


superclase de la cual deriva. Las bicicletas de montaa, las de carretera y los tndems
comparten algunos estados: cadencia, velocidad... Adems, cada subclase hereda los
mtodos de su superclase.

Las bicicletas de montaa, las de carretera y los tndems comparten algunos


comportamientos: frenar y cambiar la cadencia de pedaleo, por ejemplo.

Sin embargo, las clases derivadas no se encuentran limitadas por los estados y
comportamientos que heredan de su superclase. Muy al contrario, estas subclases
pueden aadir variables y mtodos a aquellas que han heredado. Los tndems tienen
dos asientos y dos manillares; algunas bicicletas de montaa tienen una catalina
adicional con un conjunto de marchas con relaciones de transmisin mucho ms
cortas. Las clases derivadas pueden incluso sobrescribir los mtodos heredados y
proporcionar implementaciones ms especializadas para esos mtodos. Por ejemplo,

si nuestra bicicleta de montaa tuviera una catalina extra, podramos sobrescribir el


mtodo CambiarDeMarcha para poder usar esas nuevas marchas.

Adems, no estamos limitados a un nico nivel de herencia. El rbol de herencias o


jerarqua de clases puede ser tan extenso como necesitemos. Los mtodos y las
variables miembro se heredarn hacia abajo a travs de todos los niveles de la
jerarqua. Normalmente, cuanto ms abajo est una clase en la jerarqua de clases,
ms especializado es su comportamiento. En nuestro ejemplo, podramos hacer que la
clase bicicleta derivase de una superclase de vehculos.

La herencia es una herramienta clave para abordar la resolucin de un problema de


forma organizada, pues permite definir una relacin jerrquica entre todos los
conceptos que se estn manejando. Es posible emplear esta tcnica para
descomponer un problema de cierta magnitud en un conjunto de problemas
subordinados a l. La resolucin del problema original se consigue cuando se han
resuelto cada uno de los problemas subordinados, que a su vez pueden contener
otros. Por consiguiente, la capacidad de descomponer un problema o concepto en un
conjunto de objetos relacionados entre s cuyo comportamiento es fcilmente
identificable puede ser extraordinariamente til para el desarrollo de programas
informticos.

La herencia proporciona las siguientes ventajas:

Las clases derivadas o subclases proporcionan comportamientos


especializados a partir de los elementos comunes que hereda de la clase base. A
travs del mecanismo de herencia los programadores pueden reutilizar el cdigo
de la superclase tantas veces como sea necesario.

Los programadores pueden implementar las llamadas superclases abstractas,


que definen comportamientos genricos. Las clases abstractas definen e
implementan parcialmente comportamientos, pero gran parte de estos
comportamientos no se definen ni se implementan totalmente. De esta forma, otros
programadores pueden hacer uso de estas superclases detallando esos
comportamientos con subclases especializadas. El propsito de una clase
abstracta es servir de modelo base para la creacin de otras clases derivadas,
pero cuya implantacin depende de las caractersticas particulares de cada una de
ellas. Un ejemplo de clase abstracta podra ser en nuestro caso la clase vehculos.
Esta clase sera una clase base genrica, a partir de la cual podramos ir creando
todo tipo de clases derivadas.

7. Conclusiones

Los lenguajes de programacin han evolucionado para poder representar mejor


los problemas del mundo real y hacer las cosas ms fciles para los diseadores y
desarrolladores de software.

Dado que las arquitecturas de las empresas se ha implantado para solucionar


los problemas de la ingeniera del software en la actualidad estn pensadas para
trabajar con lenguajes Orientados a Objetos, es indispensable que todo
desarrollador conozca y se familiarice con la POO.

Iniciar en la POO puede ser algo complicado al principio, lo ideal es tener las
definiciones y conceptos claros, y comenzar con un lenguaje netamente Orientado
a Objetos (como Java o C#), adems de un buen editor (Eclipse, IDE de Visual
Studio).

8. BIBLIOGRAFIA
1.

Microsoft .Net, Programcin con C# Net, [Documento PDF] disponible en


internet:

http://www.dsic.upv.es/~jlinares/csharp/tema1.pdf

2.

G.A. Betancourt, Programacin estructurada antes de programacin orientada


a objetos. [Documento Word] Disponible en internet:

http://ohm.utp.edu.co/gustavoa/res/Documentos/prog_estruct.doc
3.

I.A. POOL, Lenguaje Ensamblador. [Pgina] Disponible en Internet:

http://www.ilustrados.com/publicaciones/EpZVVllyAyovOwMHjf.php
4.

P. Norton y J. Socha. Nueva Gua del programador en ensamblador para IBM


PC/XT/AT y compatibles . Anaya Multimedia, S.A., - 1991.