Your SlideShare is downloading. ×
PRACTICA

Aplicación Básica en Java
EJEMPLO 1.
La siguiente aplicación sirve para mostrar, de forma práctica, los concepto...
return Vulnerabilidad;
         }

         String getLenguaje()
         {
                 return Lenguaje;
         }

...
{
                super(a,v,l); //Estos atributos son implementados por el constructor
de la clase padre
                C...
dos formas)

                 System.out.println(quot;nInfo de e1nquot;);
                 System.out.println(quot;tAutor:...
public primo(){
this.tamañoV=25;
this.vectorPrimos= new int [this.tamañoV];
this.numero=0;
}
}


public class Main {
publi...
public void setColor(int c){
this.color=c;
}

public int getGrosorBorde(){
return this.grosorBorde;
}

public void setGros...
/* OTROS MÉTODOS */
     virtual unsigned int sueldo() = 0;
};


class Director : public Empleado {
public:
   /* OTROS MÉ...
e[0] = &d; // Asignamos a un puntero a Empleado la dirección de un objeto del tipo
Director
  e[1] = &v; // Lo mismo con V...
Upcoming SlideShare
Loading in...5
×

P R A C T I C A2

908

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
908
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
37
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "P R A C T I C A2"

  1. 1. PRACTICA Aplicación Básica en Java EJEMPLO 1. La siguiente aplicación sirve para mostrar, de forma práctica, los conceptos de clases,objetos,atributos,métodos,herencia.La aplicación en sí se divide en 3 clases: - La clase Exploit que define los atributos y métodos de los objetos-Exploit - La clase WinExploit, heredada de la clase Exploit. Hereda los mismos atributos y métodos que la clase Exploit y, a su vez, define nuevos atributos y métodos a implementar. - La clase Pa., que contiene el método Main para la ejecución de la aplicación (clase principal). En esta clase se crean 2 objetos-Exploit y 2 objetos-WinExploit invocando a los métodos Constructores de sus respectivas clases. También accede a los objetos creados a través de sus métodos getters y setters. Clase Exploit Código class Exploit { //Definimos las variables o atributos String Autor; String Vulnerabilidad; String Lenguaje; //Constructor - Construye el objeto-exploit e identifica sus atributos //con los parámetros recibidos. Exploit(String a, String v, String l) { Autor = a; Vulnerabilidad = v; Lenguaje = l; } //Métodos String getAutor() { return Autor; //Devuelve autor } String getVulnerabilidad() {
  2. 2. return Vulnerabilidad; } String getLenguaje() { return Lenguaje; } String getInfoComun() //Devuelve toda la información de golpe { return (quot;tAutor: quot; + Autor + quot;ntVulnerabilidad : quot; + Vulnerabilidad + quot;ntLenguaje: quot; + Lenguaje); } int setOffset(String o) { //Se implementa el parámetro offset en la función que se quiera System.out.println(quot;nn[*] Implementando la direccion offset quot; + o + quot; en el exploit...nquot;); //Un ejemplo de esta implementación: //Se configura el código del exploit en C para que necesite como // parámetro de entrada la direccion offset. Este método de la // aplicación Java, realizaría una llamada externa al ejecutable // del exploit y le pasaría como parámetro de entrada, este offset //Si se ha implementado con exito, el método devuelve 0. return (0); } Clase WinExploit Código class WinExploit extends Exploit { //Además de disponer de los atributos heredados de la clase padre... //Definimos las nuevas variables o atributos a añadir String CodigoMS; //Constructor - Construye el objeto-exploit e identifica sus atributos con los parámetros recibidos. WinExploit(String a, String v, String l, String cms)
  3. 3. { super(a,v,l); //Estos atributos son implementados por el constructor de la clase padre CodigoMS = cms; } //Además de disponer de los métodos heredados de la clase padre... //Definimos los nuevos métodos String getCodigoMS() { return CodigoMS; } String getInfoWin() //Devuelve toda la información de golpe { String s; s = this.getInfoComun() + quot;ntCogigo MS: quot; + CodigoMS; return s; } } Clase app Código class app { public static void main (String[] args) { //Creamos dos objetos-Exploit llamando al Constructor Exploit e1 = new Exploit (quot;Lionquot;, quot;Serv-U FTPD SITE CHMOD Command Stack Buffer Overflowquot;, quot;Cquot;); Exploit e2 = new Exploit (quot;fiNisquot;, quot;Jordan Telnet Server Buffer Overflowquot;, quot;Cquot;); //Creamos dos objetos-WinExploit llamando al Constructor WinExploit w1 = new WinExploit (quot;Wirepairquot;, quot;Windows Workstation Service WKSSVC.DLL Buffer Overflowquot;, quot;Cquot;, quot;MS03-049quot;); WinExploit w2 = new WinExploit (quot;HoDquot;, quot;Lsasrv.dll RPC buffer overflowquot;, quot;Cquot;, quot;MS04-011quot;); //Imprimimos las características de los objetos (se puede hacer de
  4. 4. dos formas) System.out.println(quot;nInfo de e1nquot;); System.out.println(quot;tAutor: quot; + e1.getAutor()); System.out.println(quot;tVulnerabilidad: quot; + e1.getVulnerabilidad()); System.out.println(quot;tLenguaje: quot; + e1.getLenguaje()); System.out.println(quot;nnInfo de e2nquot;); System.out.println(e2.getInfoComun()); System.out.println(quot;nInfo de w1nquot;); System.out.println(quot;tAutor: quot; + w1.getAutor()); System.out.println(quot;tVulnerabilidad: quot; + w1.getVulnerabilidad()); System.out.println(quot;tLenguaje: quot; + w1.getLenguaje()); System.out.println(quot;tCodigo MS: quot; + w1.getCodigoMS()); System.out.println(quot;nnInfo de w2nquot;); System.out.println(w2.getInfoWin()); int resultado = w2.setOffset(quot;0x7517123cquot;); if (resultado == 0) { System.out.println(quot;[!] La direccion offset se implemento con exitonquot;); } else { System.out.println(quot;[!] Error durante la implementacion de la direccion offsetnquot;); } } EJEMPLO 2. Operador instanceof El operador instanceof sirve para consultar si un objeto es una instancia de una clase determinada, o de su padre. Pareciera absurdo tratar de conocer cuál es la clase que da lugar a una instancia específica, sin embargo es de mucha utilidad cuando se trabaja con interfaces y herencia a la vez. Veamos un ejemplo: public class primo { private int numero; private int vectorPrimos[]; private int tamañoV;
  5. 5. public primo(){ this.tamañoV=25; this.vectorPrimos= new int [this.tamañoV]; this.numero=0; } } public class Main { public static void main(String[] args) { primo p = new primo(); if (esPrimo(p)){ System.out.println(quot;ES INSTANCIA DE PRIMOquot;); } } public static boolean esPrimo(primo p) { return (p instanceof primo); } } Lo que realiza este sencillo ejemplo es comprobar si la instancia llamada “p” corresponde a la clase primo, definida anteriormente, con la ayuda del método estático “esPrimo” que verifica con el operador instanceof si la instancia que se traslada por el parámetro es de la clase que se evalúa. El resultado de dicha operación es true o false. EJEMPLO 3. La superclase de dicha jerarquía podría ser muy parecida a ésta: public abstract class figura { protected String nombre; protected int color; protected int grosorBorde; public String getNombre(){ return this.nombre; } public void setNombre(String n){ this.nombre=n; } public int getColor(){ return this.color; }
  6. 6. public void setColor(int c){ this.color=c; } public int getGrosorBorde(){ return this.grosorBorde; } public void setGrosorBorde(int g){ this.grosorBorde=g; } public abstract void dibujar(); } Las siguientes clases en el nivel de la jerarquía podrían quedar muy parecidas a éstas: public abstract class figura2D extends figura { public abstract int calcularArea(); public abstract int calcularPerimetro(); } public abstract class figura3D extends figura { public abstract int calcularVolumen(); } Se le pide que forme las clases de la parte inferior de la jerarquía y que representarían los objetos a instanciarse. Además, debe de realizar una implementación de esta librería, en donde el usuario pueda crear nuevas figuras y que éstas se almacenen en un arreglo de figuras. EJEMPLO 3. Se le pide que forme las clases de la parte inferior de la jerarquía y que representarían los objetos a instanciarse. Además, debe de realizar una implementación de esta librería, en donde el usuario pueda crear nuevas figuras y que éstas se almacenen en un arreglo de figuras. class Empleado { protected: static const unsigned int SUELDO_BASE = 700; // Supuesto sueldo base para todos public:
  7. 7. /* OTROS MÉTODOS */ virtual unsigned int sueldo() = 0; }; class Director : public Empleado { public: /* OTROS MÉTODOS */ unsigned int sueldo() { return SUELDO_BASE*100; } }; class Ventas : public Empleado { private: unsigned int ventas_realizadas; // Contador de ventas realizadas por el vendedor public: /* OTROS MÉTODOS */ unsigned int sueldo() { return SUELDO_BASE + ventas_realizadas*60; } }; class Mantenimiento : public Empleado { public: /* OTROS MÉTODOS */ unsigned int sueldo() { return SUELDO_BASE + 300; } }; class Becario : public Empleado { private: bool jornada_completa; // Indica si el becario trabaja a jornada completa public: /* OTROS MÉTODOS */ unsigned int sueldo() { if (jornada_completa) return SUELDO_BASE/2; else return SUELDO_BASE/4; } }; /* AHORA HAREMOS USO DE LAS CLASES */ int main() { Empleado* e[4]; // Punteros a Empleado Director d; Ventas v; // Estas dos las declararemos como objetos normales en la pila
  8. 8. e[0] = &d; // Asignamos a un puntero a Empleado la dirección de un objeto del tipo Director e[1] = &v; // Lo mismo con Ventas e[2] = new Mantenimiento(); e[3] = new Becario(); unsigned int sueldo = 0; for (int i = 0; i < 4; ++i) sueldo += e[i]->sueldo(); cout << quot;Este mes vamos a gastar quot; << sueldo << quot; dinero en sueldosquot; << endl; }

×