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
aABSTRACCIÓ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
aJAVA 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
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++
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 claseReferencia:https://bdigital.uniquindio.edu.co/bitstream/handle/001/5998/Fundamentos%20de%20programacion%20orientada%20a%20objetos%202018.pdf?sequence=1&isAllowed=y
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ódigo JAVA
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.
Código C++
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
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ódigo JAVA
C++ Ofrece:
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.
Código C++
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
Puntos JAVA:
Los atributos en Java también pueden ser públicos, privados o protegidos, similar a C++.Java soporta atributos estáticos y finales, con final indicando que el valor no cambiará.Los atributos pueden ser inicializados directamente en la declaración, en un bloque de inicialización, o en el constructor.La memoria para los atributos es gestionada automáticamente por el recolector de basura, sin necesidad de new y delete.
Código JAVA
Puntos C++:
Los atributos en C++ pueden ser públicos, privados o protegidos, lo que define su accesibilidad.C++ permite la declaración de variables miembro estáticas y constantes dentro de las clases.Los atributos pueden ser inicializados directamente en la declaración o mediante un constructor.Se debe gestionar manualmente la memoria para atributos dinámicos usando new y delete.
Código C++
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
aDefinició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.
Código JAVA
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 "::".
Código C++
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
aPuntos JAVA:
Control de Acceso: Java también utiliza especificadores de acceso para controlar la visibilidad de los atributos y métodos. Sin embargo, Java tiene una especificación adicional que es la visibilidad a nivel de paquete (cuando no se usa ningún modificador).No Friend: Java no tiene el concepto de funciones o clases amigas. Todo acceso a los miembros privados debe hacerse a través de métodos públicos o protegidos.Modificadores: Java tiene modificadores adicionales como final para indicar que un atributo es constante o que un método no puede ser anulado, y abstract para métodos que deben ser implementados por las clases derivadas.
Código JAVA
Puntos C++:
Control de Acceso: C++ utiliza especificadores de acceso para controlar el acceso a los atributos y métodos de una clase. Estos especificadores se pueden usar tanto en la declaración de atributos como de métodos.Friend: C++ permite la declaración de funciones y clases amigas (friend), que pueden acceder a los miembros privados y protegidos de la clase.Modificadores: Además de los especificadores de acceso, C++ permite el uso de otros modificadores como const para indicar que un atributo o método no puede modificar el estado del objeto.
Código C++
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
aPuntos JAVA:
Si no se especifica un modificador de acceso, los miembros de una clase tienen acceso de paquete predeterminado. Esto significa que son accesibles solo dentro del mismo paquete.Las subclases que están en diferentes paquetes pueden acceder a los miembros protegidos de la clase base, pero las clases no derivadas en otros paquetes no pueden acceder a estos miembros.
Código JAVA
Puntos C++:
Los miembros públicos de una clase son accesibles desde cualquier parte del programa.No existe un modificador específico para acceso a nivel de paquete. El acceso está controlado a través de los modificadores public, private, y protected.Permite la declaración de funciones y clases amigas (friend), que pueden acceder a los miembros privados y protegidos de la clase.
Código C++
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
aConstructor 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.
Código JAVA
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.
Código C++
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 particularesReferencia: https://www.emagister.com/uploads_user_home/Comunidad_Emagister_5883_APRENDIENDO_OBJETOS_EN_C++.pdf
aJAVA 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.
Código JAVA
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".
Código C++
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
apuede
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ódigo JAVA
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.
Código C++
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
aClase 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.
Código JAVA
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
Código C++
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
aAgregació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,
Código JAVA
Agregación y
composición
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.
Código C++
AUTORES Y REFERENCIAS
UNIVERSIDAD DEL VALLEAUTORES: Sofia Carolina Quenoran IpujanJesus LoaizaJohan Sebastian Acosta Restrepo
a