Catégories : Tous - c++ - memoria - programación - herencia

par SOFIA CAROLINA QUENORAN IPUJAN Il y a 5 mois

44

C++ VS JAVA EN PROGRAMACIÓN ORIENTADA A OBJETOS

La programación orientada a objetos (POO) es una metodología que busca solucionar problemas de la programación imperativa, como la falta de portabilidad y reutilización del código. Se recomienda aprender POO después de dominar la programación imperativa.

C++ VS JAVA EN PROGRAMACIÓN ORIENTADA A OBJETOS

AUTORES Y REFERENCIAS

UNIVERSIDAD DEL VALLE

AUTORES:

Sofia Carolina Quenoran Ipujan

Jesus Loaiza

Johan Sebastian Acosta Restrepo



C++ VS JAVA EN PROGRAMACION ORIENTADA A OBJETOS

La programación orientada a objetos surge como alternativa para mejorar algunos inconvenientes de la programación imperativa como ser la falta de portabilidad del código y su escasa reusabilidad, es por ello que se recomienda aprender POO despues de la programación imperativa.


Referencia:

https://sedici.unlp.edu.ar/bitstream/handle/10915/119243/Documento_completo.pdf-PDFA.pdf?sequence=1&isAllowed=y


ABSTRACCIÓN

La abstracción es un proceso mental que consiste en realizar los detalles relevantes, es decir, los que nos interesan en un momento sobre el objeto de estudio, mientras se ignoran los detalles irrelevantes. Esto nos lleva a una simplificación del problema, ya que la cantidad de información que es necesario manejar en un momento dado disminuye y podemos tratar cosas diferentes como si fueran la misma.



Referencia:

https://ccia.ugr.es/~jfv/abstraccion.pdf


OBJETOS

Un objeto es un elemento de un programa que almacena cierta información (atributos), realiza algunas acciones (métodos), según sus responsabilidades y posee una única identidad en el sistema. Un objeto es una instancia de una clase


Referencia:

https://bdigital.uniquindio.edu.co/bitstream/handle/001/5998/Fundamentos%20de%20programacion%20orientada%20a%20objetos%202018.pdf?sequence=1&isAllowed=y


CLASES

Una clase es un modelo que se utiliza para describir uno o más objetos del mismo tipo. La comunicación con un objeto se realiza a través del paso de mensajes. El envío de un mensaje a una instancia de una clase produce la ejecución de un método.


Referencia:

https://www.emagister.com/uploads_user_home/Comunidad_Emagister_5883_APRENDIENDO_OBJETOS_EN_C++.pdf

ATRIBUTOS

A las propiedades o características se les da el nombre de atributos. Un atributo se declara dentro de una clase, Una clase puede contener muchos o ningún atributo. El nombre de un atributo, por convención inicia con letra minúscula. Cada atributo tiene un nombre y un tipo de dato asociado.


Referencia:

https://bdigital.uniquindio.edu.co/bitstream/handle/001/5998/Fundamentos%20de%20programacion%20orientada%20a%20objetos%202018.pdf?sequence=1&isAllowed=y


MÉTODOS

Un metodo se escribe a una clase de objetos y determina cómo tiene que actuar el objeto cuando recibe el mensaje vinculado con ese método. A su vez, un metodo tambien puede eviar mensajes a otros objetos, solicitando una acción o información.

Referencia:

https://www.etsisi.upm.es/sites/default/files/curso_2013_14/MASTER/MIW.JEE.POOJ.pdf


ENCAPSULAMIENTO

La encapsulación se refiere a la capacidad de agrupar y condensar en un entorno con límites bien definidos distintos elementos.


Referencia:

https://elhacker.info/manuales/Lenguajes%20de%20Programacion/C++/Programacion-Orientada-a-Objetos-en-Cplusplus.pdf

MODIFICADORES DE ACCESO

Los modificadores de acceso son utilizados para definir el nivel de acceso que otras clases y objetos tienen a los miembros (atributos y métodos) de una clase. Estos modificadores permiten controlar la visibilidad y el alcance de los miembros de una clase, promoviendo la encapsulación y la protección de datos, entre los mas comunes está: public, private, protected y default.


Referencia:

http://librodigital.sangregorio.edu.ec/librosusgp/21047.pdf

CONSTRUCTORES Y DESTRUCTORES

El constructor es un método existente en toda clase y tiene como finalidad crear instancias de dicha clase y dar valor a los atributos. Es decir, con la simple declaración de una variable objeto no se está creando el objeto propiamente, ni se está reservando memoria para él.

Un destructor es una función miembro con igual nombre que la clase, pero precedido por un caracter "~".Una clase sólo tiene una función destructor, no tiene argumentos y no devuelve ningún tipo. Al igual que las demás funciones miembro puede estar definido dentro o fuera de la clase.


Referencia:

https://espaciocompartir.inap.es/v3/pluginfile.php/3424/mod_resource/content/12/Tema3.pdf

HERENCIA

La herencia es la propiedad que permite a los objetos construirse a partir de otros objetos. Este principio consiste en que cada clase puede dividirse en subclases, es decir, a partir de una clase base se pueden derivar otras clases (clases derivadas) que comparten características comunes con la clase de la que se derivan, además de tener sus propias características particulares


Referencia:

https://www.emagister.com/uploads_user_home/Comunidad_Emagister_5883_APRENDIENDO_OBJETOS_EN_C++.pdf

CLASES Y METODOS ABSTRACTOS

Una clase abstracta, es aquella que es definida para especificar caracteristicas generales que van a ser aprovechadas por sus clases derivadas, pero no se necesita instanciar a dicha superclase.

Un método abstracto lleva la palabra reservada abstract y contiene solo el nombre y su firma. No necesita implementarse, ya que esto es tarea de las subclases.


Referencia:

https://www.utm.mx/~caff/doc/Notas%20POO%202007%20_C%20plus%20plus%20y%20Java.pdf


POLIMORFISMO

El polimorfismo se define como la capacidad de objetos de clases diferentes, relacionados mediante herencia, a responder de manera distinta a una misma llamada de un método.


Referencia:

https://www.utm.mx/~caff/doc/Notas%20POO%202007%20_C%20plus%20plus%20y%20Java.pdf

ASOCIACIÓN DE CLASES


En la programación orientada a objetos (POO), la asociación es una relación entre clases que indica que los objetos de una clase están relacionados con los objetos de otra clase. La asociación es una conexión conceptual que permite que un objeto use los servicios de otro.


Referencia:

http://ri.uaemex.mx/bitstream/handle/20.500.11799/108162/secme-36299_1.pdf?sequence=1


C++ usa punteros o referencias para implementar la agregación. 

La composición en Java y C++ comparte el mismo concepto de una relación fuerte entre objetos pero en C++, la destrucción de los componentes está implícita en la destrucción del contenedor.

Agregación y composición

JAVA usa referencias de objetos para establecer la relación de agregación. La composición en Java y C++ comparte el mismo concepto de una relación fuerte entre objetos pero Java utiliza un recolector de basura para automatizar esto,

Función virtual

El polimorfismo es implementado en C++ a través de las clases derivadas y funciones virtuales, su sintaxis implica declarar al método de la clase base con la palabra reservada virtual, refiriendo este método en cada una de las clases derivadas

Clase abstracta:

El pilomorfismo es implementado en JAVA a través de las clases derivadas y clases abstractas.

Al hacer una solicitud de un método, a través de una variable de referencia a clase base para usar un método, JAVA determina el método que corresponda al objeto de la clase a la que pertenece, y no el método de la clase base.

Su declaración:

En C++ una clase se hace abstracta al declarar al menos unode los métodos virtuales como puro. Un método una función pura es aquel que en su declaración tiene el inicializador de = 0.


puede funcionar así:

Si una clase contiene al menos un método abstracto, toda la clase es conciderada abstracta y debe de declararse como tal, tambien es posible declarar una clase como abstracta sin que tenga métodos abstractos.

C++ permite:

C++ soporta herencia múltiple, permitiendo que una clase herede de múltiples clases base. Esto proporciona flexibilidad adicional pero puede complicar el diseño y manejo del código debido a problemas como el "Diamante de la Muerte".

JAVA usa interfaces:

JAVA no permite herencia múltiple de clases. Una clase solo puede heredar de una única clase base, lo que simplifica la jerarquía de clases y evita problemas complejos asociados con la herencia múltiple. En su lugar, Java usa interfaces para permitir que una clase implemente múltiples comportamientos.

Constructor y destructor

En C++ los constructores son un método con el mismo nombre de la clase, este método no puede tener un tipo de dato y además permite la sobrecarga, C++ proporciona un constructor de copia por omisión.

El desctructor es similiar al finalizador en JAVA con el uso similiar, el destructor no regresa valores ni tiene parametros.

Constructor y finalizador

Si no se especifica un constructor, JAVA incluye uno predeterminado, que asigna memoria para el objeto e inicializa las variables de instancia a variables predeterminados.

El finalizador o metodo finalize se ejecuta momentos antes de que el objeto sea desctruidos por el recolector de basura, su uso mas común es liberar los recursos utilizados por el objeto, como una conexión de red o cerrar algún archivo abierto.





Su definición:

Los métodos deben ser definidos en una clase, pero el cuerpo de la funcion puede ir dentro o fuera de la clase y para definir un metodo miembro de una clase fuera de esta se debe escribir antes del nombre del método el operador de alcance "::".


Definición en JAVA:

Un método es una operación que pertenece a una clase. No es posible declarar métodos fuera de la clase, además en JAVA no existe el concepto de método prototipo como en C++.

Sin embargo, al igual que en C++, la declaración de un método es considerada dentro del ambito de su clase.

Puntos C++:





Puntos JAVA:

C++ nos da una nueva posibilidad, incluir funciones como miembros del tipo empleado.

A estas funciones se les denomina miembros función o métodos, y tienen la peculiaridad de que sólo se pueden utilizar junto con variables del tipo definido. Es interesante señalar, aunque sea anticipar acontecimientos, que la función miembro no necesita que se le pase la estructura como parámetro, ya que al estar definida dentro de ella tiene acceso a los datos que contiene.

En JAVA:

La definición en java, de manera similar a C++, consiste de la palabra reservada class, seguida del nombre de la clase y finalmente el cuerpo de la clase encerrada en llaves.

Los miembros en java son esencialmente los atributos y los métodos de la clase.

C++ Permite:

C++ destaca en la implementación de objetos principalmente por su gestión automática de memoria a través de la recolección de basura, eliminando la necesidad de liberar manualmente la memoria. Por otro lado, C++ permite la sobrecarga de operadores y la herencia múltiple, ofreciendo un control detallado sobre la gestión de objetos.


Objeto en JAVA


En Java, un objeto es una instancia de una clase que se crea en el montón utilizando la palabra clave new. La memoria para el objeto es gestionada automáticamente por el recolector de basura. Los objetos pueden tener atributos (variables de instancia) y métodos (funciones) definidos por su clase. La clase actúa como un plano (blueprint) que define el comportamiento y estado del objeto.

C++ Ofrece:

C++ ofrece una mayor flexibilidad y control detallado a nivel de acceso y herencia múltiple, lo cual puede ser una ventaja en sistemas complejos pero también añade una mayor complejidad.

Código C++
JAVA ofrece:

simplificar la abstracción y la herencia mediante un sistema de clases y interfaces más restrictivo y organizado, lo cual facilita la legibilidad y el mantenimiento del código, aunque puede ser menos flexible en algunos casos.

Código JAVA