PDF de programación - Aspectos Internos de la Programación Orientada a Objetos

Imágen de pdf Aspectos Internos de la Programación Orientada a Objetos

Aspectos Internos de la Programación Orientada a Objetosgráfica de visualizaciones

Publicado el 5 de Septiembre del 2019
836 visualizaciones desde el 5 de Septiembre del 2019
445,2 KB
22 paginas
Creado hace 14a (02/06/2009)
Facultad de Ingeniería
Universidad de Buenos 

Aires

75-08 Sistemas Operativos
Lic. Ing. Osvaldo Clúa

2007

Aspectos Internos de la Programación 
Aspectos Internos de la Programación 

Orientada a Objetos
Orientada a Objetos

Modelo Procedural

tyepdef struct fraccion{

int num;
int den;}

void setFraccion (int n, int 

d,fraccion &f){

f.num=n;f.den=d;}

int getNum(fraccion f){return 

f.num;}

int main(){
   fraccion f1;

setFraccion(3,4,f1);

}

Archivo de Código ejecutable

COFF – ELF - PE. . .

setFraccion(int n . . .)

getNum()

main(. . .)

Global data area

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

2

De Objetos A Procedural

Cabecera de la clase

//   vector_plano.h
using namespace std;
class vector_plano{
  private:
  

float ii; float jj;

  .. .

  public:
    vector_plano(float x, float 
y, bool cart=true);
    float i();
    float j();
};

Métodos

//   vector_plano.cpp
float vector_plano::i(){

return ii;}

//   vector_plano.cpp
float 
vector_plano::vector_plano
(float x, float y) {. . .}

Exports
Constructores
i()

j()

Global Data Area

y.. las variables de instancia?

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

3

Clases y Objetos en Procedural

int i;
vector_plano uno (4.2,5.8);
vector_plano dos (3.7,9.1);

Run-time area del programa

i

uno

dos

ii
jj

ii
jj

Biblioteca de la clase

Vector_plano

Exports
Constructores
i( )

j( )

Global Data Area

Referencia:
Especificación del PE de Microsoft

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

4

Clases y SuperClases en

Procedural

Bibliotecas

Fr acci ón

get Num( )

Sub

Super

Fr acci ónOr den

esMayor ( )

Los métodos se buscan:
• En las subclases (si es polimórfico)
• En las SuperClases (por herencia)

Código del
programa

Obj et o 1
Obj et o 2

Referencia:

Thinking in C++ Capítulo
dedicado a funciones
virtuales. (de Bruce Eckel)

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

5

Clases y Objetos en O.O.

Var i abl es de cl ase

Di cci onar i o de
Mét odos

Super

Sub

Var i abl es de cl ase
Di cci onar i o de
Mét odos

Super
Sub

Códi gos de Mét odos
Códi gos de Mét odos
. . .
. . .
. . .
. . .
. . .
. . .

Obj et os

Obj et os

Obj et os

Obj et os

Referencia:
Formato de un archivo .class

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

6

¿Cómo funciona la JVM?

• Arma la estructura de clases en memoria.
• Busca la clase con el método “main” y le dá

control.
– La clase “main” crea los objetos necesarios.
– Registra Eventos, Observados y Observadores.
– Generalmente queda a la espera de un evento.

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

7

El Class Loader

• Es el encargado de cargar las clases en

Memoria.
– Llama a findLoadedClass para ver si la clase

se encuentra en memoria.

– Si no es así, llama a loadClass de la

superclase (modelo de delegación).

– Si el paso anterior no produjo una clase

. . . . . . . . . . . . . . . . . . . . .

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

8

El Class Loader (2)

– Si el paso anterior no produjo una clase

• Llama a findClass para encontrar la clase en el

ClassPath (o en .)
• Si la encuentra:

– lee los bytecodes en un arreglo
– crea la clase con defineClass

• Si no tuvo éxito, arroja

ClassNotFOundException



FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

9

El Class Loader (3)

• Un ClassLoader se crea con:

– ClassLoader ()
– ClassLoader (ClassLoader Parent)
• Así permite “insertar” una rutina para

modificar el comportamiento de la carga de
clases.

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

10

Threads en Java

• Los threads son procesos “peso pluma” (lightweight

process).
– El programador crea los threads.

• Un thread puede controlar varios objetos

– La JVM tiene un planificador default para los threads.

Puede cambiarse.

• En un objeto puede haber mas de un thread

simultáneamente.
– Hay herramientas para controlar la concurrencia.

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

11

Reflection (MetaProgramación en

Java)

• En Java, una Class también es un Objeto.
• Es un objeto del tipo Class.

– Se puede obtener la clase de un Objeto usando el

método get Cl ass( ) de la clase Obj ect .

– Se pueden obtener las interfaces implementadas

con get I nt er f aces( ) .

– A partir de ahí se puede manipular en forma

indirecta al objeto.

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

12

Reflection

• Se manipulan:

– Campos: get Fi el ds ( ) ;
– Métodos: get Met hods( ) ;
– Constructores: get Decl ar edConst r uct or s();

• los métodos se invocan con i nvoke( . . . ) ;
• los valores con get xxx( ) y set xxx( ) ;
• y así siguiendo …

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

13

Cargando Nuevo Código

● Haciendo uso de Reflection, Java puede
cargar código generado dinámicamente.

● Esto se asemeja a las bibliotecas
dinámicas en tiempo de ejecución.
● Ejemplo: HelloWorldGenerator

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

14

HelloWorldGenerator

import java.io.*;
import java.lang.reflect.*;
public class HelloWorldGenerator {

public static void main( String[] args ) {

try {
FileOutputStream fstream = new

FileOutputStream( "HelloWorld.java" );

PrintWriter out = new PrintWriter( fstream );
out.println( "class HelloWorld { \n"
+ " public static void main( String[] args ) { \n"
+ " System.out.println( \"Hola che!\" );\n"
+ " } \n"
+ "} " );
out.flush();
. . . . . . . . .
// sigue

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

15

HelloWorldGenerator (2)

System.out.println ("Compilando ...");
Process p = Runtime.getRuntime().exec( "javac HelloWorld.java" );
p.waitFor();
System.out.println ("Ejecutando ...");
if ( p.exitValue() == 0 ) {

Class outputClassObject = Class.forName( "HelloWorld" );

Class[] fpl = { String[].class };

Method m = outputClassObject.getMethod( "main", fpl );

m.invoke( null, new Object[]{ new String[] {} } ); }

else {InputStream errStream = p.getErrorStream();

for ( int j = errStream.available(); j > 0; j-- )
System.out.write( errStream.read() ); } /* end if p.exitValue()

*/

} catch(Exception e){ throw new RuntimeException(e); }
}/* end main */
}/* end class */

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

16

Enterprise Java Beans

• Una especificación que provee la definición de

servicios para aplicaciones.

• Algunas de estas definiciones son interfaces.

Otras son servicios como persistencia
– El constructor de una aplicación debe implementar las

interfaces.

– Un application server se encarga de su administración y

manejo.

– Los objetos de estas clases se llaman componentes.

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

17

Java 2 Enterprise Edition

• Es una plataforma para el desarrollo de software multicapa,
modular, basado en componentes, corriendo en un servidor
de aplicaciones.

• Java Beans es una de las especificaciones de J2EE.
• Otras especificaciones son:

– javax.servlet
– javax.servlet.jsp
– javax.naming
– java.sql, javax.sql
– java.transaction
– javax.xml.*
– javax.jms.*

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

18

Objetos Distribuidos

● Objetos diseñados para trabajar en conjunto.

– Pero que residen en

● Máquinas Diferentes.
● Procesos diferentes en la misma máquina.

– CORBA, DCOM (Microsoft), DDOBJECTS

(Delphi), Pyro (Python), Druby (Ruby),
Replica (C++)

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

19

Java RMI

• Un objeto Java puede invocar a un método de otro

objeto Java en otra java Virtual Machine.
– El que llama debe implementar java.rmi.Remote,
– El que recibe el llamado debe extender

java.server.UnicastRemoteObject.

• La llamada a métodos remotos es independiente de la

capa de red y de la de transporte.

• Se trata de un servicio de capa de aplicación parecido

al remote procedure call (RPC)

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

20

Distribuidos + Reflection=JINI

• Actualmente River de Apache Incubator
• Usando Objetos Distribuidos y Reflexión puede lograrse

que objetos clientes y servidores se encuentren en una
red para cumplir una tarea.

• Es una especificación co-operable con UPnP.

– Permite auto-reconfiguración.
– Se adapta rápidamente a los cambios (resiliencia).
– Permite integración de componentes nuevos o viejos encapsulados.
– Es gratuita.

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

21

Frameworks

• Conjunto de clases cooperantes.
• Las API de Java son un ejemplo de Framework.
• Las MFC son otro ejemplo.
• Permiten reusar lógica y código.
• Las aplicaciones se programan usando la jerarquía de

clases ya existentes.

• La clases existentes del Framework brindan el

comportamiento general de la aplicación.

• Las nuevas clases extienden al Framework (seamless

integration).

FIUBA 2007

75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clíúa

22
  • Links de descarga
http://lwp-l.com/pdf16536

Comentarios de: Aspectos Internos de la Programación Orientada a Objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad