miércoles, 28 de octubre de 2009

Prueba de programación

Matrices.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author Christian Arias
*/
public class Matrices {
public int numeroFilas;
public int numeroColumnas;
public double [][] matriz;

public Matrices(){

}
public Matrices (int nf, int nc){

numeroFilas = nf;
numeroColumnas = nc;
matriz = new double[numeroFilas][numeroColumnas];

for(int i=0; i < numeroFilas; i++)
for (int j=0; j < numeroColumnas; j++)
matriz[i][j]=0;
}
public Matrices transpuesta(){
Matrices resultado;
resultado= new Matrices(this.numeroColumnas, this.numeroFilas);
for (int i=0; i < this.numeroFilas;i++)
for(int j=0; j < this.numeroColumnas;j++)
resultado.matriz[j][i]=this.matriz[i][j];
return resultado;
}
public Matrices multiplicacion(Matrices b){
Matrices resultado;
if(this.numeroColumnas == b.numeroFilas){
resultado= new Matrices(this.numeroFilas, b.numeroColumnas);

for(int i=0; i < this.numeroFilas; i++){
for(int j=0; j < b.numeroColumnas; j++){
for(int k=0; k < this.numeroColumnas; k++)
resultado.matriz[i][j]+= (this.matriz[i][k]* b.matriz[k][j]);
}
}
return resultado;
}
else
System.out.println("ERROR EN DIMENSIONES DE LAS MATRICES");
resultado=null;
return resultado;

}


public String toString(){
String aux="[";
for (int i=0; i < numeroFilas; i++){
for (int j=0; j < numeroColumnas; j++ ){
aux+= matriz[i][j]+" ";
}
aux += "\n";
}
aux+="]";
return aux;
}


}

PruebaMatriz.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author Christian Arias
*/
public class PruebaMatriz {
public static void main(String args[]){
Matrices a= new Matrices(1, 5);
a.matriz[0][0]= 1; a.matriz[0][1]=-1; a.matriz[0][2]=0;
a.matriz[0][3]= 1; a.matriz[0][4]=1;
System.out.println(a.toString());

Matrices b= new Matrices(5, 3);
b.matriz[0][0]= 6; b.matriz[0][1]=-2; b.matriz[0][2]=5;
b.matriz[1][0]= 4; b.matriz[1][1]=2; b.matriz[1][2]=-1;
b.matriz[2][0]= 0; b.matriz[2][1]=1; b.matriz[2][2]=1;
b.matriz[3][0]= -2; b.matriz[3][1]=-2; b.matriz[3][2]=0;
b.matriz[4][0]= 1; b.matriz[4][1]=0; b.matriz[4][2]=-1;
System.out.println(b.toString());

Matrices c= new Matrices(2, 3);
c.matriz[0][0]= 2; c.matriz[0][1]=2; c.matriz[0][2]=1;
c.matriz[1][0]= 3; c.matriz[1][1]=-1;c.matriz[1][2]=0;
System.out.println(c.toString());


Matrices e= new Matrices (3,3);
e.matriz[0][0]= -1; e.matriz[0][1]=0; e.matriz[0][2]=-1;
e.matriz[1][0]= 1; e.matriz[1][1]=0; e.matriz[1][2]=1;
e.matriz[2][0]= -1; e.matriz[2][1]=1; e.matriz[2][2]=-1;
System.out.println(e.toString());



Matrices f;
f= b.transpuesta();
System.out.println(f.toString());


Matrices h;
h= a.transpuesta();
System.out.println(h.toString());

Matrices n;
n=a.multiplicacion(b);
System.out.println(n.toString());

Matrices g;
g= c.multiplicacion(e);
System.out.println(g.toString());


Matrices i;
i= e.multiplicacion(f);
System.out.println(i.toString());

Matrices m;
m= c.multiplicacion(e);
System.out.println(m.toString());

Matrices r;
r= g.multiplicacion(f);
System.out.println("Multiplicacion de C*E*Bt=\n"+r.toString());

r= n.multiplicacion(e);
System.out.println("Multiplicacion de A*B*E=\n"+r.toString());

r= i.multiplicacion(h);
System.out.println("Multiplicacion de E*Bt*At=\n"+r.toString());

}




}

Resultados de las operaciones

Multiplicacion de C*E*Bt=
[-13.0 -1.0 0.0 0.0 0.0
-44.0 -12.0 -4.0 8.0 0.0
]
Multiplicacion de A*B*E=
[-12.0 5.0 -12.0
]
Multiplicacion de E*Bt*At=
[-6.0
6.0
-12.0
]

sábado, 24 de octubre de 2009

Figuras

Este programa calcula el lado de un cuadrado por medio de sus coordenadas, y la altura de un triangulo por medio de sus coordenadas

Main.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package debercuadrado;

/**
*
* @author usuario
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}

}

Cuadrado.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class Cuadrado {

private double CoorX;
private double CoorY;

public Cuadrado(){
setCuadrado (0,0);
}

public Cuadrado(double x, double y){
setCuadrado(x,y);
}

public void setCuadrado(double x, double y){
CoorX = x;
CoorY = y;
}

public double getCoorX(){
return CoorX;
}
public double getCoorY(){
return CoorY;
}

public String toString(){
return "Punto coordenadas: "+"["+CoorX+","+CoorY+"]";
}
public static void main (String args[] ){
Cuadrado p1 = new Cuadrado (0,0);
Cuadrado p2 = new Cuadrado (1,0);
Cuadrado p3 = new Cuadrado (1,1);
Cuadrado p4 = new Cuadrado (0,1);

System.out.println(p1.toString());
System.out.println(p2.toString());
System.out.println(p3.toString());
System.out.println(p4.toString());

System.out.println("Coordenada x = " +p1.getCoorX()+5);
System.out.println("Coordenada y = " +p1.getCoorY());
System.out.println(p1.toString());
p1.setCuadrado(p1.getCoorX()+5,p1.getCoorY());
System.out.println(p1.toString());
}

}

Triangulo.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class Triangulo {

private double CoorX;
private double CoorY;

public Triangulo(){
setTriangulo (0,0);
}

public Triangulo(double x, double y){
setTriangulo(x,y);
}

public void setTriangulo(double x, double y){
CoorX = x;
CoorY = y;
}

public double getCoorX(){
return CoorX;
}
public double getCoorY(){
return CoorY;
}

public String toString(){
return "Punto de coordenadas:"+"["+CoorX+","+CoorY+"]";
}
public static void main (String args[] ){
Triangulo p1 = new Triangulo (2,0);
Triangulo p2 = new Triangulo (8,1);
Triangulo p3 = new Triangulo (6.3,9);


System.out.println(p1.toString());
System.out.println(p2.toString());
System.out.println(p3.toString());


System.out.println("Coordenada x " +p1.getCoorX()+5);
System.out.println("Coordenada y " +p1.getCoorY());
System.out.println(p1.toString());
p1.setTriangulo(p1.getCoorX()+5,p1.getCoorY());
System.out.println(p1.toString());
}
}

Figura.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class Figura extends Cuadrado{

private double ld;


public Figura(){
setLd(0);

}

public Figura(double x, double y, double l){
super(x,y);
setLd(l);
}
public void setLd(double l){
ld = l;
}
public double getLd(){
return ld;
}

public String toStrig(){
return this.toStrig()+"\nLado ="+ld;
}
public static void main(String args[]){
Figura c1 = new Figura(6,3,7);
Cuadrado p1 = new Cuadrado(6,3);

System.out.println(p1.toString());
System.out.println(c1.toString());
System.out.println("Lado = "+c1.getLd());
System.out.println("Coordenada x: "+c1.getCoorX());
System.out.println(p1.toString());
}

}

FiguraDos.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class FiguraDos extends Triangulo {
private double Al;


public FiguraDos(){
setAl(0);

}

public FiguraDos(double x, double y, double a){
super(x,y);
setAl(a);
}
public void setAl(double a){
Al = a;
}
public double getAl(){
return Al;
}

public String toStrig(){
return this.toStrig()+"\nAltura ="+Al;
}
public static void main(String args[]){
FiguraDos c1 = new FiguraDos(6,3,7);
Triangulo p1 = new Triangulo(6,3);

System.out.println(p1.toString());
System.out.println(c1.toString());
System.out.println("Altura = "+c1.getAl());
System.out.println("Coordenada x: "+c1.getCoorX());
System.out.println(p1.toString());
}

}

Seno, Coseno y valor de e

Este programa calcula el seno, coseno y el valor de e

Main.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package deberfunciones;

/**
*
* @author usuario
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}

}

TablaFunciones.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class TablaFunciones {
public static void main(String args []) {
double x;
double ep;
double y;
double m=0.0;
while(m < 10){
System.out.println("m = "+m);
m+=0.1;
x = Math.sin(m);
System.out.println(" sin ="+x);
x=Math.cos(m);
System.out.println(" cos ="+x);
ep=2.7183;
for(y = 0; y <= 10;y = y+0.1){
System.out.println((Math.pow(ep,y))*(Math.cos(y)));

}
}
}
}

Potencia, Raíz y Ecuación en Java

Este programa calcula la potencia, la raíz y la ecuación = x + √x

Main.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package operaciones;

/**
*
* @author usuario
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}

}

Potencia.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class Potencia{

public static void main(String args []) {
int x = 25;
double y;
double z;

if (x > 0){
System.out.println("Potencia = "+(x*x));
y= (double) x*x;
}
else{
System.out.println("El valor es incorrecto (debe ser mayor a cero)");
}
if (x >= 0){
y = Math.sqrt(x);
System.out.println("Raiz = "+(y));
}
else{
System.out.println("El valor debe ser menor o igual a cero");

}

if (x>=1){
y = Math.sqrt(x);
z = (double) x;
System.out.println("Ecuacion = "+(y+z));
}
else{
System.out.println("El valor debe ser mayor o igual que uno");

}

}

}

domingo, 18 de octubre de 2009

Programa java

Este programa realiza la suma, resta, multiplicación y traspuesta de matrices

Main.java

/*
* To change this template, choose Tools Templates
* and open the template in the editor.
*/
package matematica;
/**
*
* @author program
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}

}

Matriz.java

/*
* To change this template, choose Tools Templates
* and open the template in the editor.
*/

/**
*
* @author program
*/

/**
* Constructor sin parametros
* @author program
*/
public class Matriz {
public int numeroFilas;
public int numeroColumnas;
public double [][] matriz;

public Matriz(){

}

/**
* Constructor con parametros
* @param nf numero de filas
* @param nc numeros de columnas
*/
public Matriz (int nf, int nc){

numeroFilas = nf;
numeroColumnas = nc;
matriz = new double[numeroFilas][numeroColumnas];
for(int i=0; i< numeroFilas; i++)
for (int j=0; j< numeroColumnas; j++)
matriz[i][j]=0;
}
/**
* Metodo de suma de matriz
* @param b primer sumando
* @return Matriz resultado de suma
*/

public Matriz suma(Matriz b){
Matriz resultado;
if((this.numeroFilas == b.numeroFilas) & (this.numeroColumnas ==
b.numeroColumnas)){
resultado = new Matriz(this.numeroFilas,this.numeroFilas);
for (int i=0; i< this.numeroFilas; i++)
for(int j=0; j< this.numeroColumnas; j++)
resultado.matriz[i][j]= this.matriz[i][j] + b.matriz[i][j];
return resultado;
}
else {
System.out.println("Error en dimensiones de las matrices");
resultado = null;
return resultado;
}
}

/**
* Metodo de resta de matrices
* @param b primer sustraendo
* @return resta de matrices
*/
public Matriz resta(Matriz b){
Matriz resultado;
if((this.numeroFilas == b.numeroFilas) & (this.numeroColumnas ==
b.numeroColumnas)){
resultado = new Matriz(this.numeroFilas,this.numeroFilas);
for (int i=0; i< this.numeroFilas; i++)
for(int j=0; j< this.numeroColumnas; j++)
resultado.matriz[i][j]= this.matriz[i][j] - b.matriz[i][j];
return resultado;
}
else {
System.out.println("Error en dimensiones de las matrices");
resultado = null;
return resultado;
}
}

/**
* Metodo para transponer matrices
* @return Transpuesta de la matriz
*/

public Matriz transpuesta(){
Matriz resultado;
resultado= new Matriz(this.numeroColumnas, this.numeroFilas);
for (int i=0; i< this.numeroFilas;i++)
for(int j=0; j< this.numeroColumnas;j++)
resultado.matriz[j][i]=this.matriz[i][j];
return resultado;
}

/**
* Metodo multiplicar matrices
* @param b
* @return
*/

public Matriz multiplicacion(Matriz b){
Matriz resultado;
resultado= new Matriz(this.numeroFilas, this.numeroColumnas);
if((this.numeroFilas == b.numeroColumnas) && (this.numeroColumnas ==
b.numeroFilas)){
for(int i=0; i< this.numeroFilas; i++){
for(int j=0; j< this.numeroColumnas; j++){
for(int k=0; k< b.numeroFilas; k++){
resultado.matriz[i][j]= resultado.matriz[i][j]+
this.matriz[i][k]*b.matriz[k][j];
}
}
}
else{
System.out.println("Las dimensiones de las matrices no son correctas");
}
}
return resultado;
}

/**
* Devuelve el objeto matriz en texto
* @return
*/

public String toString(){
String aux="[";
for (int i=0; i< numeroFilas; i++){
for (int j=0; j< numeroColumnas; j++ ){
aux+= matriz[i][j]+" ";
}
aux += "\n";
}
aux+="]";
return aux;
}

}

PruebaMatriz .java

/*
* To change this template, choose Tools Templates
* and open the template in the editor.
*/

/**
*
* @author program
*/
public class PruebaMatriz {
public static void main(String args[]){
Matriz a= new Matriz(2, 2);
a.matriz[0][0]= 1; a.matriz[0][1]=2;
a.matriz[1][0]= 3; a.matriz[1][1]=4;
System.out.println(a.toString());

Matriz b= new Matriz(2, 2);
b.matriz[0][0]= 5; b.matriz[0][1]=6;
b.matriz[1][0]= 7; b.matriz[1][1]=8;
System.out.println(b.toString());

Matriz c;
c= a.suma(b);
System.out.println(c.toString());

Matriz d;
d= a.resta(b);
System.out.println(d.toString());

c=a.transpuesta();
System.out.println("Transpuesta de a\n"+c.toString());

c=a.multiplicacion(b);
System.out.println(c.toString());

}

}

domingo, 11 de octubre de 2009

Elementos de un Universo

Con este programa podemos asignar valores a una variable y crear elementos de un universo que previamente hemos declarado.

aquí les dejo el codigo de mis dos programas:

Main.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package deberclases;

/**

*

* @author usuario

*/

public class Main {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

}

}

Automovil.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author usuario

*/

public class Automovil {

public String color;

public String marca;

public String ubicacion;

public Automovil(){

}

public Automovil(String col, String mar, String ubi ){

color = col;

marca = mar;

ubicacion= ubi;

}

}

UsoAutomovil.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author usuario

*/

public class UsoAutomovil {

public static void main(String args[]){

Automovil a1= new Automovil ();

a1.marca = "Chevrolet";

a1.color = "Negro";

a1.ubicacion = "Quito";

System.out.println("Marca:"+a1.marca+"\nColor:"+a1.color+"\nUbicacion:"+a1.ubicacion);

Automovil a2= new Automovil("Mazda", "Rojo", "Cuenca");

System.out.println("\nMarca:"+a2.marca+"\nColor:"+a2.color+"\nUbicacion:"+a2.ubicacion);

Automovil a3= new Automovil("Hyundai", "Plateado", "Guayaquil");

System.out.println("\nMarca:"+a3.marca+"\nColor:"+a3.color+"\nUbicacion:"+a3.ubicacion);

}

}


Segundo ejemplo

Main.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package deberclases2;

/**

*

* @author usuario

*/

public class Main {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

}

Universidad.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author usuario

*/

public class Universidad {

public String nombre;

public String ciudad;

public double costoMatricula ;

public Universidad(){

}

public Universidad(String nom, String ciu, double cost ){

nombre = nom;

ciudad = ciu;

costoMatricula = cost;

}

public void asignarCostoMatricula(double cost){

costoMatricula = cost;

}

}

UsoUniversidad.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author usuario

*/

public class UsoUniversidad {

public static void main(String args[]){

Universidad u1= new Universidad ();

u1.nombre = "Universidad Tecnologica Equinoccial";

u1.ciudad = "Quito";

u1.asignarCostoMatricula(220.0);

System.out.println("Nombre:"+u1.nombre+"\nCiudad:"+u1.ciudad+"\nCosto de matricula:"+u1.costoMatricula);

Universidad u2= new Universidad("Universidad Espiritu Santo", "Guayaquil", 800.0);

System.out.println("\nNombre:"+u2.nombre+"\nCiudad:"+u2.ciudad+"\nCosto de matricula:"+u2.costoMatricula);

Universidad u3= new Universidad("Universidad de Loja", "Loja", 150.0);

System.out.println("\nNombre:"+u3.nombre+"\nCiudad:"+u3.ciudad+"\nCosto de matricula:"+u3.costoMatricula);

}

}

domingo, 4 de octubre de 2009

Programación Orientada a Objetos

La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990.

Antes de hablar de la programación orientada a objetos hay que definir que es un objeto dentro de la programación.

Definición de Objeto

En filosofía un objeto es aquello que puede ser observado, estudiado y aprendido, en contraposición a la representación abstracta de ese objeto que se crea en la mente a través del proceso de generalización. Un objeto en POO representa alguna entidad de la vida real, es decir, alguno de los objetos que pertenecen al negocio con que estamos trabajando o al problema con el que nos estamos enfrentando, y con los que podemos interactuar. A través del estudio de ellos se adquiere el conocimiento necesario para, mediante la abstracción y la generalización, agruparlos según sus características en conjuntos, estos conjuntos determinan las clases de objetos con las que estamos trabajando. Primero existen los objetos, luego aparecen las clases en función de la solución que estemos buscando. Ésta es la forma más común de adquirir conocimiento aunque no es la única. En ocasiones cuando el observador es un experto del negocio (o del problema), el proceso puede ser a la inversa y comenzar el análisis en una base teórica abstracta, sustentada por el conocimiento previo que da lugar primeramente a clases de objetos que satisfagan las necesidades de la solución.

Estos conceptos son parte de la base teórica de la idea de objeto y clase utilizados en la POO. Los objetos tienen características fundamentales que nos permiten conocerlos mediante la observación, identificación y el estudio posterior de su comportamiento; estas características son:

Identidad

Comportamiento

Estado

En las ramas de las ciencias de la computación más estrictamente matemáticas, el término objeto es usado en sentido puramente matemático para referirse a cualquier "cosa". Esta interpretación resulta útil para discutir sobre teorías abstractas, pero no es suficientemente concreta para servir como definición de un tipo primitivo en discusiones de ramas más específicas como en la programación, que está más cerca de cálculos reales y el procesamiento de información.

Características de la POO

Hay un cierto acuerdo sobre exactamente qué características de un método de programación o lenguaje le definen como "orientado a objetos", pero hay un consenso general en que las características siguientes son las más importantes:

Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.

Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesion de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que específica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.

Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.

Recolección de basura: la Recolección de basura o Garbage Collection es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto desasignar de la memoria, los Objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo Objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse manualmente.

Bibliografía

http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

http://es.wikipedia.org/wiki/Objeto_(programaci%C3%B3n)