14.05.2013 Views

Diferencias entre Java y C++ En Java los punteros son expícitos ...

Diferencias entre Java y C++ En Java los punteros son expícitos ...

Diferencias entre Java y C++ En Java los punteros son expícitos ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Diferencias</strong> <strong>entre</strong> <strong>Java</strong> y <strong>C++</strong><br />

Referencias<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 1<br />

<strong>Diferencias</strong> <strong>entre</strong> tipos primitivos y Objetos<br />

int var1;<br />

MiClase objeto1;<br />

<strong>En</strong> la dirección de memoria var1 se almacena<br />

un valor entero<br />

La dirección de memoria objeto1 no apunta a<br />

<strong>los</strong> datos del objeto, sino que es una<br />

referencia al propio objeto (null si no se le ha<br />

asignado un objeto)<br />

Asignación<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 3<br />

<strong>En</strong> <strong>C++</strong><br />

ob1=ob2;<br />

copia <strong>los</strong> datos de un objeto ob2 a otro objeto<br />

ob1.<br />

<strong>En</strong> <strong>Java</strong> se copia la referencia<br />

ob1.met();<br />

ob2.met();<br />

Aplica el método met() al mismo objeto<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 5<br />

<strong>En</strong> <strong>Java</strong> <strong>los</strong> <strong>punteros</strong> <strong>son</strong><br />

<strong>expícitos</strong><br />

<strong>En</strong> <strong>C++</strong> el uso de <strong>punteros</strong> es común para<br />

manejar memoria dinámica.<br />

<strong>En</strong> <strong>Java</strong> no se programa con <strong>punteros</strong>, porque<br />

<strong>Java</strong> siempre utiliza <strong>punteros</strong> explícitos<br />

(direcciones de memoria).<br />

<strong>En</strong> <strong>Java</strong> “todo <strong>son</strong> <strong>punteros</strong>” -más o menos-<br />

Referencias<br />

<strong>En</strong> <strong>C++</strong><br />

MiClase objeto1;<br />

crea el objeto y su memoria<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 2<br />

“Una referencia es un puntero con la sintaxis de<br />

una variable”<br />

El operador new<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 4<br />

Todo objeto en <strong>Java</strong> se crea con new, que<br />

devuelve una referencia al objeto.<br />

<strong>En</strong> <strong>C++</strong> new devuelve un puntero.<br />

<strong>En</strong> <strong>Java</strong> no podemos corromper unos datos<br />

accediendo a su dirección de memoria.<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 6<br />

1


Borrado de la memoria<br />

<strong>En</strong> <strong>C++</strong> se debe borrar con delete<br />

<strong>En</strong> <strong>Java</strong> no hay que preocuparse de<br />

borrar la memoria, pues el recolector de<br />

basuras (garbage collector) borra <strong>los</strong><br />

objetos no referenciados<br />

automáticamente.<br />

Operador ==<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 7<br />

<strong>En</strong> <strong>C++</strong> el oreador<br />

ob1==ob2 indica si <strong>los</strong> datos de <strong>los</strong> distintos<br />

objetos <strong>son</strong> iguales<br />

<strong>En</strong> <strong>Java</strong> el operador == indica si las<br />

referencias <strong>son</strong> iguales, es decir, si <strong>son</strong> el<br />

mismo objeto.<br />

Herencia Múltiple<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 9<br />

<strong>En</strong> <strong>C++</strong> las clases soporta herencia<br />

simple y múltiple<br />

Las clases en <strong>Java</strong> sólo soportan<br />

herencia simple (aunque las interfaces<br />

si soportan herencia múltiple)<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 11<br />

Argumentos<br />

<strong>En</strong> <strong>C++</strong> se puede pasar un puntero como<br />

argumento de una función para no copiar <strong>los</strong><br />

datos de un objeto.<br />

<strong>En</strong> <strong>Java</strong> todos <strong>los</strong> objetos se pasan por<br />

referencia (evitando copiar objetos) y <strong>los</strong><br />

tipos primitivos se pasan por valor (se crea<br />

una variable y se copia el valor).<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 8<br />

Sobrecarga de operadores<br />

<strong>En</strong> <strong>C++</strong> se puede sobreescribir algunos<br />

operadores como +, * para que sea<br />

dsitinto en <strong>los</strong> objetos de alguna clase<br />

<strong>En</strong> <strong>Java</strong> no hay sobrecarga de<br />

operadores<br />

<strong>Java</strong> <strong>En</strong>trada y Salida 10<br />

2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!