Professional Documents
Culture Documents
Semana: 2
FUNDAMENTOS DE COMPUTACIN E INFORMTICA
ALGORITMOS
TEMA
Virus informtico y lenguajes de programacin
Docente:
Mg. Flix R. Pucuhuayla Revatta
-Qu es un virus
-1 Virus
-Historia y evolucin
Qu es un virus?
Los virus informticos
son programas
diseados
expresamente para
interferir en el
funcionamiento de
una computadora.
1 Virus
El primer virus que atac a una
mquina IBM Serie360 (y
reconocido como tal), fue llamado
Creeper, creado en 1972 por
Robert Thomas Morris.
Informacin a Proteger
Cual es la informacin ms valiosa que
manejamos?
Riesgos?
Pero si nunca paso nada!!.
Esto no real.
Lo que sucede es que hoy sabemos muy poco.
Amenazas
Pharming
Password cracking
Fraudes informticos
Escalamiento de privilegios
Exploits
Denegacin de servicio
Backups inexistentes
Destruccin de equipamiento
Instalaciones default
Desactualizacin
Keylogging
Port scanning
Mg. Flix
Pucuhuayla Revatta
Hacking de
Centrales
Telefnicas
Ms Amenazas!!
Spamming
Violacin de contraseas
Virus
Ingeniera social
empleados deshonestos
Propiedad de la informacin
Robo de informacin
Indisponibilidad de informacin clave
Intercepcin de comunicaciones voz y
wireless
Falsificacin de informacin
Agujeros
de seguridad
Pucuhuayla
Revatta de redes conectadas
para terceros Mg. Flix
Acceso indebido a documentos impresos
Vulnerabilidades Comunes
(fsicos/lgicos)
(disuasivos/preventivos/detectivos/correctiv
os)
Historia y evolucin
Historia y evolucin
Historia y evolucin
1984: El Dr. Fred Cohen incluy
las pautas para el desarrollo de
virus informticos.
1987: Se da el primer caso de
contagio masivo de computadoras
Historia y evolucin
A mediados de 1995 se reportaron en
diversas ciudades del mundo la aparicin
de una nueva familia de virus que no
solamente infectaban documentos, sino
que a su vez, sin ser archivos ejecutables
podan auto-copiarse infectando a otros
documentos. Fueron llamados macro
virus, slo infectaban a los archivos de
MS-Word.
Mg. Flix Pucuhuayla Revatta
Historia y evolucin
A principios de 1999 se
empezaron a propagar
masivamente en Internet los virus
anexados a mensajes de correo
2002 surge el primer virus
diseado para atacar archivos
Shockwave Flash de Macromedia
y aparece winux, primer virus para
ejecutables tanto de Windows
Mg. Flix
Pucuhuayla Revatta
como de
Linux.
Historia y evolucin
A partir de ahora podemos considerar que todos
los virus son propagados por internet, llegando
algunos de ellos como el I Love You a causar
grandes daos y llegando incluso a afectar el
pentgono.
VIRUS
como se transmiten?
La forma ms comn en que se
transmiten los virus es por dispositivos de
almacenamiento,descarga o ejecucin de
ficheros adjuntos en e-mails.
Virus MacroVirus
Se transmite a travs de los documentos de las
aplicaciones que poseen algn tipo de lenguaje de
macros.
Cuando uno de estos archivos infectado es abierto o
cerrado, el virus toma el control y se copia a la
plantilla.
Los lenguajes de macros como el Visual Basic For
Applications son muy poderosos y poseen capacidades
como para cambiar la configuracin del sistema
operativo, borrar archivos, enviar e-mails, etc.
Mg. Flix Pucuhuayla Revatta
Virus Residentes
Cuando se ponen en marcha, la primera accin
que realizan consiste en comprobar si se
cumplen todas las condiciones para atacar
(fecha, hora,... etc.).
Otros virus residentes se mantienen dentro de la
memoria y esperan a que ocurra algn evento
determinado para de esa forma poder disparar
su accin destructiva. Suelen aadirse al
programa o los programas que infecta,
aadiendo su cdigo al propio cdigo del
Mg. Flix Pucuhuayla Revatta
fichero ejecutable.
Virus Troyano
Un troyano es similar a un virus, es un programa que
busca propagarse y sobre todo a travs de aplicaciones
de Internet como el EMAIL, ICQ y CHAT.
La diferencia bsica de los troyanos con los virus es
que los troyanos estn hechos para permitirles a otras
personas tener acceso al contenido de la PC infectada
Son muy peligrosos, porque pueden capturar y
reenviar datos confidenciales a una direccin externa.
Los Antivirus
Los antivirus son
programas que se
encargan de evitar la
intrusin de
programas dainos
en nuestro
computador.
Vacunar:
La vacuna de los antivirus se queda residente en memoria y
filtra los programas que son ejecutados.
Detectar:
Revisa todos los archivos que tenemos grabados en el disco
duro. Mediante el grupo de codigos virales el antivirus
escanea la informacin para reconocerlos y borrarlos.
Eliminar:
Es la parte del antivirus que desarma la estructura del virus y
las elimina, finalmente repara los archivos daados.
Mg. Flix Pucuhuayla Revatta
Otras Amenazas
Keyloggers o
registradores de teclas
Ingenieria social es la
prctica de obtener
informacin confidencial
a travs de la
manipulacin. Los
ingenieros sociales
aprovechan la tendencia
natural de la gente a
confiar en su palabra
Mg. Flix Pucuhuayla Revatta
Otras amenazas
'Spam' es la palabra que se
utiliza para calificar el correo
no solicitado enviado por
Internet.
Los programas anti-spam
utilizan tcnicas, tales como
enviar mensajes al
postmaster del dominio del
que procede el spam o borrar
directamente los mensajes
sospechosos de nuestro
servidor de correo para evitar
descargarlos.
Mg. Flix Pucuhuayla Revatta
Evolucin de los
Lenguajes de Programacin
Declarativos
Evolucin de los
Lenguajes de Programacin
Orientados a Objetos e
Imperativos
Dominios
de
aplicacin
Aplicaciones de los aos sesenta. Durante la dcada de 1960, casi
toda la programacin se poda dividir en cuatro modelos bsicos de
programacin:
Entornos interactivos
El programa interacta durante su ejecucin directa con un
usuario en una consola de visualizacin, enviando
alternativamente salidas hacia sta y recibiendo entradas
desde el teclado o ratn (procesadores de texto, hojas de
clculo, juegos, etc.).
Las caractersticas de E/S interactivas son diferentes de las
operaciones ordinarias con archivos.
El programa debe ser capaz de gestionar el manejo de errores. La
terminacin del programa como respuesta aun error no es
ordinariamente aceptable (a diferencia del procesamiento por lotes).
Los programas interactivos deben utilizar con frecuencia algn
concepto de restricciones de tiempo.
El concepto de programa principal suele estar ausente. En su lugar,
el programa se compone de un conjunto de subprogramas y el
usuario introduce el programa principal como una serie de
comandos en el terminal.
Mg. Flix Pucuhuayla Revatta
Entornos de programacin
Marcos de ambiente
Un ambiente de apoyo
consiste en servicios
de infraestructura que
se conocen como
marco de ambiente.
Este marco suministra
servicios como un
depsito de datos,
interfaz grfica de
usuario, seguridad y
servicios de
comunicacin. Los
programas se escriben
de modo que utilicen
estos servicios.
Mg. Flix Pucuhuayla Revatta
Mquinas virtuales
Aunque hay muchos rasgos que se podran destacar
como candidatos para formar parte de una definicin del
concepto de mquina virtual (a partir de ahora MV), una
MV se puede definir sencillamente como una capa de
abstraccin que separa el funcionamiento de un
ordenador de su hardware. Adems, las MV se dividen
en abstractas o tericas, como sera la mquina de
Turing (el primer ejemplo de una MV), y concretas o
prcticas (a las que se quiere normalmente se hace
referencia al hablar de MV). En esta seccin se tratarn
las MV concretas que, como se ver, son capas de
software que juegan un papel relevante tanto en el
funcionamiento de los lenguajes compilados como
interpretados.
Mg. Flix Pucuhuayla Revatta
Introduccin al concepto
Las MV se construyeron para simplificar el
proceso del control del hardware de un
ordenador porque extienden y enmascaran la
funcionalidad del hardware a travs de
procedimientos y datos abstractos.
Se pueden identificar dos tipos de MV
concretas:
las que juegan un papel en la preparacin de un
programa para su ejecucin (tiempo de compilacin)
y
las que permiten la ejecucin de dicho programa. La
figura muestra la diferencia entre los dos tipos:
Mg. Flix Pucuhuayla Revatta
Introduccin al concepto
Las MV suelen aparecer en una jerarqua. Usamos la jerarqua de MV de
compilacin, por ejemplo, cada vez que invocamos el compilador de
C++. Y dos ejemplos muy comunes del papel de una MV en la jerarqua
de MV de ejecucin son PostScript (que define una MV para una
impresora) y MSDOS bajo MS Windows (que define una MV que permite
que antiguos programas de DOS funcionen bajo Windows).
PostScript es una MV que incluye el estado grfico, la ruta actual, el estado
del diccionario y, aunque sea bastante complejo, presenta una visin de alto
nivel de muchos tipos distintos de impresoras, aislando las caractersticas de
las impresoras de las aplicaciones que las usan.
Introduccin al concepto
Lenguajes intermedios
Un lenguaje intermedio se puede definir
como una manera de representar
procedimientos y estructuras de datos que
sirva como entrada para una MV en alguna
parte de su jerarqua, entre el lenguaje de
entrada (el nivel ms alto) y el cdigo
ejecutado en la mquina (el nivel ms bajo)
tanto en el tiempo de compilacin como en el
de ejecucin.
Mg. Flix Pucuhuayla Revatta
Lenguajes intermedios
Un lenguaje intermedio se puede definir
como una manera de representar
procedimientos y estructuras de datos que
sirva como entrada para una MV en alguna
parte de su jerarqua, entre el lenguaje de
entrada (el nivel ms alto) y el cdigo
ejecutado en la mquina (el nivel ms bajo)
tanto en el tiempo de compilacin como en el
de ejecucin.
Mg. Flix Pucuhuayla Revatta
Lenguajes intermedios
Para considerar el papel de los lenguajes intermedios y sus
ventajas y desventajas, conviene destacar la diferencia entre
la traduccin de un lenguaje de alto nivel a cdigo mquina
anteriormente a su ejecucin (su compilacin) y su
interpretacin, es decir, la conversin de cada instruccin del
lenguaje a cdigo mquina y su ejecucin, una por una, al
ejecutar el programa. Este proceso se realiza a travs de
una MV de interpretacin que simula un ordenador cuyo
cdigo mquina es el lenguaje de alto nivel que est siendo
interpretado. Y tpicamente, esta MV se construye a travs
de un conjunto de programas de cdigo mquina que
representa los algoritmos y estructuras de datos necesarios
para la ejecucin de las instrucciones del lenguaje de alto
nivel. Hay ventajas y desventajas en cada manera de
convertir los lenguajes de alto nivel a cdigo mquina, que
se pueden resumir as:
Mg. Flix Pucuhuayla Revatta
Lenguajes intermedios
Lenguajes intermedios
Estos dos casos representan los dos extremos
porque, como ya se ha visto, existe tambin lo
que se llama la compilacin parcial, que es una
mezcla de los dos enfoques, donde se compila
el lenguaje de alto nivel a un lenguaje
intermedio (ms cerca de las estructuras
presentes en el cdigo mquina que las del
cdigo fuente) y luego se interpreta este
lenguaje al ejecutar el programa.
Como puede imaginarse, esta tcnica combina
las ventajas y desventajas de los dos enfoques
anteriores. Un ejemplo de esta combinacin
existe en el lenguaje de programacin Java y su
entorno.
Mg. Flix Pucuhuayla Revatta
Lenguajes intermedios
Entre otras cosas, Java empez con la idea de liberar al
programador de las dificultades de portar su aplicacin a
nuevas plataformas lo cual, si el programa est muy
vinculado a algn aspecto del sistema operativo donde fue
escrito, podra ser muy difcil.
Se compilar el cdigo fuente de Java a un cdigo byte
(bytecode) antes de ejecutarlo. Y a la hora de correr el
programa, este cdigo, como lenguaje intermedio, sera el
lenguaje de entrada para una MV, que con un conjunto de
libreras (el entorno de ejecucin de Java, Java Runtime o
JRE), la interpretara para su ejecucin.
Por lo tanto, este bytecode podra correr en cualquier
hardware donde haya una versin del JRE disponible. Como
este bytecode est ms cerca del nivel de mquina que de
un lenguaje de alto nivel, los programas corrern ms
rpidamente que los programas completamente
interpretados, aunque ms despacio que los programas
previamente compilados
alPucuhuayla
cdigoRevatta
mquina.
Mg. Flix
Lenguajes intermedios
Como se puede ver en la figura 1, tanto los
programas compilados parcialmente a un
lenguaje intermedio (como Java) como los
programas escritos en lenguajes de alto nivel
que se interpretan (como Lisp) requieren una
MV para interpretar el programa. La principal
ventaja del lenguaje intermedio en este caso
es su proximidad al nivel del cdigo mquina,
en el sentido de que supone menos trabajo a
la hora de ejecutarlo y, por lo tanto, los
programas corren ms rpidamente que los
puramente interpretados.
Mg. Flix Pucuhuayla Revatta
Lenguajes intermedios
Adems del papel de los lenguajes
intermedios en la compilacin parcial, se
puede destacar su papel en la compilacin
estndar. Como ejemplo se puede considerar
C como lenguaje intermedio para un lenguaje
compilado nuevo. Si el autor de un nuevo
lenguaje decide utilizar C, por ejemplo, como
su lenguaje intermedio, slo tendr que
implementar una MV para convertir el cdigo
fuente de su lenguaje a C, ahorrando mucho
trabajo.
Mg. Flix Pucuhuayla Revatta
Lenguajes intermedios
Las ventajas de utilizar un lenguaje tan establecido
como C como lenguaje intermedio son:
La facilidad de portar el lenguaje a una nueva mquina
(slo hay que tener un compilador C disponible all).
La generacin de cdigo mquina es una tarea muy
compleja que requiere un conocimiento profundo de la
arquitectura de la mquina en cuestin y de cada
mquina en que se quiere una versin del lenguaje.
La facilidad de modificar algn rasgo del comportamiento
del lenguaje en alguna mquina en concreto (por ejemplo,
caractersticas de memoria o rendimiento se pueden
aadir libreras C customizadas sin grandes problemas).
Las posibilidades disponibles para mapear estructuras
intermedias del nuevo lenguaje a estructuras de datos de
C.
Mg. Flix Pucuhuayla Revatta
Lenguajes intermedios
Y las desventajas son:
La depuracin es muy difcil porque, entre otras cosas, los
errores que ocurren en el cdigo C no son muy fciles de
localizar en lo que ha escrito el programador originalmente
en el nuevo lenguaje.
Las caractersticas de rendimiento y eficiencia del
lenguaje estn determinadas por el
compilador C.
Habr ocasiones en las que no exista una buena
traduccin entre una estructura en el nuevo lenguaje y las
estructuras de datos en C, por lo que habr una prdida de
eficiencia en el programa resultante (como, por ejemplo,
ocurre en la mayora de las ocasiones en que se compilan
estructuras de Prolog a C slo se puede expresar
iteracin en Prolog utilizando recursin).
Mg. Flix Pucuhuayla Revatta
Paradigmas y lenguajes
PARADIGMAS DE PROGRAMACIN
La clasificacin de los lenguajes atendiendo a sus
caractersticas intrnsecas conduce a los llamados
paradigmas de programacin. Un paradigma de
programacin es un modelo de programacin que
engloba a ciertos lenguajes que comparten:
Elementos estructurales: con qu se confeccionan los
programas?
Elementos metodolgicos: cmo se confecciona un programa?
Programacin Imperativa o
Procedural: FORTRAN
Es la primera que se desarrolla porque va
determinando las operaciones que hay que
realizar sobre una mquina ideal de Von
Neumann. Desde este punto de vista un
programa es una secuencia de acciones
(instrucciones) que se realizan en un cierto
orden determinado por el flujo del programa.
Las estructuras para el control son
generalmente sentencias condicionales y
bucles. Como un ejemplo ilustrativo veamos el
aspecto de un programa en lenguaje Pascal
que calcula el factorial de un nmero positivo
x:
Mg. Flix Pucuhuayla Revatta
FORTRAN. Historia
Primer lenguaje de alto nivel (1957).
Desarrollado por IBM para el IBM 704.
Estaba orientado a la eficiencia en la
ejecucin.
Definicin estndar del lenguaje en el 66.
Otras versiones:
FORTRAN 77
FORTRAN 90
Mg. Flix Pucuhuayla Revatta
FORTRAN. Ejemplo
PROGRAM TRIVIAL
INTEGER I
I=2
IF(I .GE. 2) CALL PRINTIT
STOP
END
SUBROUTINE PRINTIT
PRINT *,Hola Mundo
RETURN
END
FORTRAN. Caractersticas
Tipos de datos:
Numricos (enteros, reales, complejos y doble
precisin).
Booleanos (logical)
Arreglos
Cadenas de caracteres
Archivos
Ejemplo anotado
FORTRAN. Subprogramas
Hay tres tipos de subprogramas:
Function, devuelven un solo valor de tipo numrico,
lgico o cadena de caracteres.
Subroutine, devuelve valores a travs de variables no
locales COMMON.
Funcin de enunciado, permite calcular una sola
expresin aritmtica o lgica.
FN(X,Y)=SIN(X)**2-COS(Y)**2
Gestin de almacenamiento.
Las variables son locales o globales (COMMON)
Recursividad: RECURSIVE FUNCTION FACTORIAL(X)
Parmetros de subprograma. Paso por referencia.
Mg. Flix Pucuhuayla Revatta
Abstraccin y encapsulamiento
FORTRAN. Evaluacin del lenguaje
La abstraccin es posible mediante los
subprogramas y el uso de variables COMMON,
aunque su uso es propenso a errores.
FORTRAN sigue siendo utilizado en el mbito
cientfico y es muy eficiente realizando clculos.
La estructura del programa suele ser dificil de entender.
En FORTRAN 90 se incluye la recursividad y la memoria
dinmica.
Las etiquetas de las sentencias ya no son necesarias, ni
el GOTO, pues se ha transformado en un lenguaje
estructurado.
El aspecto de los programas sigue siendo de
procesamiento por lotes
Mg. Flix Pucuhuayla Revatta
Programacin Imperativa o
Procedural: C
Historia
60 Thompson desarrolla en Bell Multics, se
crea un lenguaje llamado B.
70, el proyecto UNIX avanza y el lenguaje
B se queda pequeo, se comienza a
desarrollar C
82, C es distribuido con Unix y muy usado
en las universidades. ANSI comienza a
desarrollar un estndar
Mg. Flix Pucuhuayla Revatta
Ejemplo anotado
Objetos de datos
Tipos de datos primitivos
Los nombres de variables no pueden comenzar con
dgito. Sensible a may-min.
Los datos son enteros (char, short, long),
enumerados (enum) o float. Los punteros se declaran
con el tipo seguido de *.
No hay booleanos.
Representacin de almacenamiento
Los tipos de C emplean bsicamente la
representacin hardware de sus datos.
Una variable de tipo array es tambin el
puntero al primer elemento del array que
comienza con el ndice 0.
Es posible inicializar cualquier variable
declarada estticamente.
Control de secuencia
Expresiones.Se emplea notacin infija.
Coerciones, pueden ser forzadas haciendo una cast
unaria antes de un valor.
A + (int)b
Subprogramas y Gestin de
almacenamiento
main() es la funcin de entrada al programa
principal.
Cada funcin tiene asociado un registro de
activacin, que la invoca cuando es llamada.
No hay anidamiento de funciones, por lo que las
variables son globales o locales. Las globales
deben ser declaradas por extern, para que sea
vistas por otros mdulos. extern int i, j, k;
Las funciones de C slo toman argumentos por
valor. Para simular paso por referencia hay que
pasar el puntero por valor.
Mg. Flix Pucuhuayla Revatta
Abstraccin y encapsulamiento
El lenguaje da facilidades para la
definicin de tipos, pero no
implementa el ocultamiento de la
informacin, de manera que si se
tiene acceso a un struct, tambien
se acceder a todos sus
componentes.
El uso de bibliotecas con
interfaces header tambin permite
Mg. Flix Pucuhuayla Revatta
la abstraccin.
Ejemplo anotado
Objetos de datos
Tipos de datos primitivos: tomos. Cada tomo
tiene una lista de propiedades asociada, accesible
a travs del puntero que almacena el nombre del
tomo.
No se distinguen may-min para identificadores
Control de secuencia
Gestin de subprogramas
Tres clases de funciones:
Funcin interpretada, en forma de
estructura de listas. Primitivas eval y
apply.
Funcin compilada, compiladas en
un bloque de cdigo mquina que
puede ser ejecutado por el interprete
del hardware.
Macro, se declara con define. Es
simplemente una funcin ordinaria
en LISP. Puede ser interpretada y
Mg. Flix Pucuhuayla Revatta
compilada.
Gestin de almacenamiento
La memoria se estructura en forma de montculo, que
maneja unidades de una palabra de tamao fijo usando
una lista de espacios libres y un recolector de basura.
Entorno de referencia:
Local, es el que se da en las listas, como asociaciones de tomos
relacionados de una determinada manera.
Global o comn, se consigue mediante asociacin de un tomo
con una propiedad del mismo que contiene un puntero al datos
referenciado. Se usa set y setq.
Paso de parmetros:
Transmisin por valor, consiste en evaluar las expresiones de una
lista de parmetros y transmitir los valores resultantes.
Transmisin por nombre, transmitir las expresiones de la lista de
parmetros sin evaluar, y dejar que la funcin llamada los evalue
usando eval. En funciones macro la transmisin por nombre es la
norma. Para funciones lambda se puede especificar la transmisin
por nombre usando nlambda, en lugar de lambda.
Mg. Flix Pucuhuayla Revatta
Funciones en LISP I
Funciones normales, son las que se suelen incluir en las
implementaciones de LISP (ver manual en cada caso).
Funciones de lista, para manipulacin de listas:
Predicados
Funciones en LISP I
Funciones aritmticas:
+, -, *, y /.
rem x y, devuelve el mdulo x/y (remainder).
Abstraccin y encapsulamiento
LISP, en origen, no incluye
caractersticas de abstraccin de datos.
CLOS fue una ampliacin de LISP con
orientacin de objetos. Caractersticas:
Herencia mltiple
Funciones genricas
Metaclases y metaobjetos
Tcnica de creacin e inicializacin de
objetos que permite control del proceso por
parte del usuario.
Historia
Coulmerauer (1970) desarroll un
lenguaje para hacer deducciones
de texto
Se aplica un mecanismo de
resolucin sobre predicados
especiales, clusulas de Horn,
llamado unificacin.
La difusin del lenguaje se
produce en los 80, pero de forma
muy limitada debido a la falta de
Mg. Flix Pucuhuayla Revatta
aplicaciones
en dicho lenguaje.
Ejemplo anotado
Objetos de datos
Tipos de datos primitivos: variables y constantes:
Enteros
Reales
Caracteres
Los identificadores con minscula representan hechos,
los que van con mayscula variables.
El alcance de una variable es la regla donde aparece.
Representacin de almacenamiento
Las reglas y hechos son almacenadas en
memoria como listas enlazadas.
La ejecucin de prolog consiste en una
bsqueda en profundidad de un rbol
conteniendo todas las posibles soluciones.
Para cada una de ellas se evaluar su
correccin. La bsqueda se puede hacer
ms eficiente mediante la poda del rbol
de bsqueda (corte).
Mg. Flix Pucuhuayla Revatta
Control de secuencia
El orden de evaluacin es secuencial
Expresiones, operaciones aritmticas y
operadores relacionales. Not().
Enunciados
Hechos, relaciones que se expresan en una
consulta. Son tuplas con un nombre de predicado y
unos argumentos.
Reglas, implicaiones que se expresan en una
operacin consult
Preguntas, sucesin de trminos que finalizan con
un punto.
Cortes, (!), fuerza el retroceso en la bsqueda. Esto
puede impedir que se encuentren ciertas
soluciones, pero puede hacer ms eficiente la
bsqueda.
Abstraccin y encapsulamiento
PROLOG no proporciona estas
capacidades.
Paradigmas y lenguajes
HERENCIA
Con frecuencia la informacin se pasa entre
componentes de programa de manera implcita,
a este traspaso de informacin le llamamos
herencia.
La herencia consiste en la recepcin en un
componente de programa de propiedades o
caractersticas de otro componente de acuerdo
con la relacin especial que existe entre ambos
componentes.
Las reglas de alcance de variables son una
forma de herencia.
La herencia mltiple se da cuando una clase
tienen varias superclases de las que hereda.
Mg. Flix Pucuhuayla Revatta
Clases derivadas
La herencia se implementa en los lenguajes orientados
a objetos a travs de clases derivadas, que heredan
propiedades y mtodos de sus superclases.
La visibilidad de los objetos heredados depende de la
forma en que se declaran:
PRIVATE
PUBLIC
PROTECTED
Mtodos
La herencia de mtodos para crear
objetos nuevos proporciona un poder
adicional que va ms all del simple
encapsulamiento.
En las clases derivadas, cuando se
quiere cambiar uno de los mtodos hay
dos posibilidades:
Redefinir el mtodo en la clase derivada
Usar una funcin virtual, que se enlaza
dinmicamente en el momento de llamada
del subprograma.
Clases abstractas
Se usa cuando la superclase define una especie de
plantilla para las subclases, aunque no permite que se
declaren objetos en esta definicin. Esto requiere que
todos los objetos que requieren esta clase se definan de
una subclase derivada.
No se puede crear ningn objeto que tenga funciones
virtuales nulas, del tipo:
Virtual void NombreDeTipo()=0;
Objetos y mensajes
El lenguaje Smalltalk presenta 3 caractersticas:
Definicin de clase. Define la estructura interna y los
mtodos que se pueden usar para crear y manipular
objetos.
Ejemplarizacin de objetos. Se crean objetos
especficos para cada definicin de clase.
Paso de mensajes. Los mtodos se pasan como
mensajes a un objeto para llevar a cabo una accin.
Tipos:
Un mensaje unario es un mtodo sin parmetros.
El mensaje binario se usa, principalmente, para operadores
aritmticos.
Los mensajes de palabra clave se usan para hacer
asignaciones de valor, por ejemplo, en un array:
X_Array new: 10
X at:3 put:42
Mg. Flix Pucuhuayla Revatta
Herencia de clases
Si se enva un mensaje a un
objeto con un mtodo que no est
definido en su clase se pasa a la
clase progenitora, y as
sucesivamente.
En los mtodos de palabra clave el
parmetro se nombra de forma
explcita en la declaracin del
mtodo
Mg. Flix Pucuhuayla Revatta
Conceptos de abstraccin
El encapsulamiento es un mecanismo divide y vencers
para proporcionar control sobre el programa en
desarrollo.
La abstraccin y la herencia puede ser usada para
impedir al programador ver el contenido de los objetos
de datos que no convenga. La herencia,
fundamentalmente, es un mecanismo para pasar
informacin entre objetos en clases relacionadas.
Permite:
Especializacin, para que los objetos derivados contengan
caractersiticas de otros objetos.
Descomposicin, permite separar una abstraccin en sus
componentes. Lo contrario es la agregacin.
Ejemplarizacin, es el proceso de crear ocurrencias de una
clase (se trata de un proceso de copia).
Individualizacin, objetos similares se agrupan con otros para
propsitos comunes. Es lo contrario de agrupamiento.
Mg. Flix Pucuhuayla Revatta
POLIMORFISMO
El polimorfismo es la capacidad de
un solo operador o nombre de
subprograma para referirse a
varias definiciones en funcin del
contexto, es decir, de los tipos de
daos de los argumentos y del
resultado.
Paradigmas y lenguajes
Mecanismos de los LP
Control de secuencia
Las estructuras para el control de la secuencia
son de 3 tipos:
Estructuras que se usan en expresiones: precedencia
y parntesis.
Estructuras que se usan en enunciados:
condicionales e iterativos.
Estructuras que se usan en subprogramas: llamadas
a subprogramas.
Secuenciamiento en expresiones
La evaluacin de expresiones depende de las
prioridades y de los parntesis. Se puede
representar la evaluacin en una estructura de
rbol. Tres rdenes:
Prefijo (polaca prefija), el operador antecede a los n
operandos.
Se puede evaluar en un solo examen de la expresin
Se puede usar para cualquier nmero de operandos
Traduccin a cdigo fcil y almacenamiento en pila
Representacin de expresiones en
tiempo de ejecucin
Es necesario traducir las expresiones a
una forma ejecutable:
Secuencias de cdigo mquina, que deben
hacer uso de localizaciones absolutas de
los datos y registros para guardar datos
intermedios.
Estructuras de rbol, luego se ejecutan
usando intrpretes software.
Formas prefija y postfija, pueden ser
ejecutadas almacenndolas en la pila de
forma fcil.
Mg. Flix Pucuhuayla Revatta
De variables
De parmetros formales
De subprogramas
Para tipos definidos
Para constantes definidas
De enunciados
De excepciones
Para operaciones primitas
Para constantes de literales
Ambientes de referencia
Ambiente local de referencia:
Parmetros formales
Variables locales
Subprogramas definidos
Semntica de la transmisin
Independientemente de la la implementacin
los parmetros pueden ser:
De entrada (IN)
De salida (OUT)
De entrada/salida (IN/OUT)