Bitacora POO
Bitacora POO
FACULTAD TECNOLÓGICA
SISTEMATIZACIÓN DE DATOS
BOGOTÁ D.C
2022
1
Tabla de Contenido
1. INTRODUCCIÓN A LA PROGRAMACIÓN...………………………………………….…..4
1.1. Juego Light Bot ..……………………………………………………………………………...4
1.2. Recursos de software para desarrollo …………………………………………………..……..4
1.2.1. Dev C++………………………………………………..……………………………………...4
1.2.2. Diagrams.net……………………………………………………………………….………….4
1.2.3. NetBeans…..…………………………………………………………………………………..4
1.2.4. Java JRE……………………..………………………………………………………………...5
1.2.5. Java JDK...…………………………………………...………………………………………..5
2. LENGUAJE C++…………………………………………………………...………………....5
2.1. Palabras reservadas de C++……………………………………………………………..…….5
2
4.6.7. Métodos get y set………………………………………………….………………………….17
4.7. Modificador de acceso o visibilidad………………………………………………………….17
4.8. Composición………………………………………………………………………………….18
4.9. Vector de objetos……………………………………………………………………………..18
3
1. INTRODUCCIÓN A LA PROGRAMACIÓN
1.2.2. Diagrams.net
Es una aplicación web gratuita de Google Drive, se utiliza para crear una gran variedad de
diagramas desde cualquier navegador web o en el caso de querer utilizarla sin internet, esta
posee una edición de escritorio. Permite agregar imágenes, configurar los textos, elegir el tipo
de fuente, cambiar el idioma y guardar el archivo en el Drive.
1.2.3. NetBeans
Es un programa que sirve como IDE (entorno de desarrollo integrado), el cual contiene
múltiples programas para programar, como lo es: Java, C++, PHP, HTML, Ruby entre otras.
Una de las principales características es el ser un programa totalmente gratuito lo que lo
convierte en unos de los preferidos por los usuarios, además ofrece una excelente interfaz y
cuenta con un editor que completa el código, lo que lo ayuda a facilitar la programación para
usuarios principiantes.
4
1.2.4. Java JRE
Java Runtime Environment (JRE) es un conjunto de utilidades que permite la ejecución de
programas Java. JRE está formado por Java Virtual Machine (JVM), clases del núcleo de la
plataforma Java y bibliotecas de la plataforma Java de soporte, todo esto para que la app sea
funcional, se puede decir que el JRE actúa como intermediario entre el sistema operativo y
Java.
2. LENGUAJE C++
Desarrollado en 1979 C++ es un lenguaje de programación que proviene de la extensión del
lenguaje C con el objetivo de implementar la programación orientada a objetos lo que lo
convierte en un lenguaje híbrido. Se le conoce como un programa multiparadigma debido a
manejar los paradigmas de la programación, programación genérica, estructurada y orientada
a objetos.
5
Imagen 2.2 Palabras reservadas C++
https://www.mhe.es/universidad/informatica/8448198441/archivos/apendice_general_3.pdf
Las palabras reservadas son identificadores reservados que tienen un significado especial y no
se pueden utilizar como identificadores en el programa, excepto si utilizan por delante el
carácter ‘@’ como prefijo.
3. LENGUAJE JAVA
6
el ambiente de Internet, Java permite al programador un control total. En otras palabras, Java
no es un lenguaje de entrenamiento; es un lenguaje para programadores profesionales.
La versión inicial de Java aún y cuando fue revolucionaria no marcó el fin de la era
innovadora de Java. A diferencia de otros lenguajes de programación que normalmente se van
estableciendo a base de pequeñas mejoras incrementales, Java ha continuado evolucionando a
un ritmo explosivo. Java incorporaba muchos elementos nuevos en sus bibliotecas, redefinía
la forma en que los eventos eran gestionados y reconfiguraba muchas características de la
biblioteca 1.0. También declaraba obsoletas algunas de las características definidas por Java
1.0. Por lo tanto, Java 1.1 añadía y eliminaba atributos de su versión original. La siguiente
versión fue Java 2, donde el «2» indicaba «segunda generación». La creación de Java 2 fue un
parte aguas que marcaba el comienzo de la «era moderna» de este lenguaje de programación
que evolucionaba rápidamente. La primera versión de Java 2 tenía asignado el número de
versión 1.2, cosa que puede resultar extraña.
A la hora de compilar una aplicación escrita en Java, esta no se compila a lenguaje maquina
como ocurría con anteriores programas, Java como aplicaciones .NET utilizan un lenguaje
intermedio denominado Byte Code, la máquina virtual es la que ejecuta este código, esta es
una idea que viene desde los 80’ cuando Pascal lo implementaba. En el caso de Java, la Java
Virtual Machine toma el código Byte Code lo compila en la aplicación java y a su vez al
código nativo de la plataforma en la que se está ejecutando. La ventaja principal de este
esquema es que es muy fácil crear un programa en Java y que luego éste se pueda ejecutar en
cualquier sistema operativo para el cual exista una implementación de la JVM. Por ejemplo,
el mismo programa Java puede correr en Windows, Linux, Macintosh (Mac), etc. Esto
garantiza la portabilidad de Java.
Seguridad
Los programas que un usuario descarga pueden ser peligrosos, para evitar esto Java confina a
los applets a ser ejecutados en un ambiente controlado sin permitirle el acceso a los recursos
completos de la computadora. La posibilidad de descargar applets con la certeza de que no
harán ningún daño y que no producirán violaciones en la seguridad del sistema es considerada
por muchos la característica más innovadora de Java.
Portabilidad
Para Java era necesario crear un código ejecutable portable para que cualquier computadora
conectada a la red pueda ejecutar este código.
Al poco tiempo de la salida de Java, se crea Servlets el cual sirve para ejecutarse en un
servidor, esta creación los lleva a encabezar como uno de los mejores programas. Los servlets
son altamente portables debido a que como todos los programas de Java son compilados a
7
bytecode y ejecutados por una máquina virtual, para ser utilizado solo requiere contar con un
servidor JVM y un contenedor de servlets.
La API Java es una interfaz de programación de aplicaciones provista por los creadores del
lenguaje de programación Java, que da a los programadores los medios para desarrollar
aplicaciones Java. Es un conjunto de reglas (código) y especificaciones que las aplicaciones
pueden seguir para comunicarse entre ellas: sirviendo de interfaz entre programas diferentes
de la misma manera en que la interfaz de usuario facilita la interacción humano-software. Las
clases Java se proporcionan para interactuar directamente con todos los objetos y valores.
De manera general, la API de Java ofrece las siguientes características:
● Arranque de destinos con tecnología Wake-on-LAN dentro de tareas.
● Tareas de planificación.
● Creación de tareas.
● Creación de tareas abiertas. Cada destino ejecuta una tarea abierta una sola
vez.
● Tareas de supervisión.
● Tareas de cancelación.
● Gestión de la configuración del servidor.
● Gestión de destinos, como por ejemplo adición de destinos, eliminación de destinos o
modificación de las propiedades de un destino.
● Gestión de perfiles de sistema.
● Gestión de configuraciones de sistema operativo.
● Gestión de módulos de software.
● Gestión de plantillas de despliegue.
En Java existen ocho tipos de datos primitivos que se pueden clasificar en:
8
De todos ellos, salvo del tipo boolean que únicamente puede ser true o false, en la siguiente
tabla se muestran sus posibles valores mínimo y máximo:
En el caso de los arreglos o vectores hay que identificar el tipo de dato y el nombre por
ejemplo:
En la imagen 8 se observa la manera clásica en Java de declarar un vector aunque existe otra
manera, que es:
9
Imagen 9.. Programa NetBeans
Autoría propia
En la imagen tenemos el ejemplo con un tipo de dato ‘char’ y le asignamos el nombre “vec”
10
3.7 Operadores en Java
Un operador lleva a cabo operaciones sobre uno (operador unario), dos (operador binario) o
tres (operador ternario) datos u operandos de tipo primitivo devolviendo un valor
determinado también de un tipo primitivo.
11
En la imagen 13 podemos observar un ejemplo de un programa en Java de como se utiliza los
operadores racionales.
Java cuenta con varios operadores aritméticos para datos numéricos enteros y reales.
Como observamos en el ejemplo los operadores lógicos nos sirven para realizar
comparaciones, estos operadores se pueden utilizar una o más veces en una condición lo que
los convierte en una gran ayuda a la hora de programar.
El operador Java más sencillo es el operador de asignación. Mediante este operador se asigna
un valor a una variable. El operador de asignación es el símbolo igual.
Imagen 16. Operador de asignación, ejemplo con las variables.
12
http://www.manualweb.net/java/operadores-asignacion-aritmeticos-java/
Es otro operador condicional, el cual puede funcionar como intercambio del if y else, por
ejemplo:
La imagen 17 hace referencia a el uso del condicional if, en la siguiente imagen se observa el
código anterior puede ser reemplazado por ‘?’
4.1. Historia.
Todo empieza en Noruega en el Centro de Cálculo Noruego cuando Krinsten Nygaard, tiene
problemas para el desarrollo de simulaciones de sistemas físicos. La solución que idearon fue
diseñar el programa paralelamente al objeto físico. Es decir, si el objeto físico tenía cien
componentes, el programa también tendría cien módulos, uno por cada pieza. Partiendo de
esta situación se desarrolló un lenguaje de programación con algunos conceptos pilares de la
Programación Orientada a Objetos. Este se denominó SIMULA 67, y fue presentado en 1967
al público.
A principios de los 70 es creado Small talk. Fue el primer lenguaje Orientado a Objetos puro
de los lenguajes Orientados a Objetos lo que lo lleva a únicamente utilizar clases y objetos
(Java usa tipos de datos primitivos).
En los 80 sale al público la ampliación de C que sería C++, un programa diseñado para el uso
de POO, gracias al fuerte apoyo que tenia C, C++ y su inclusión de POO lo llevaron a lograr
un gran éxito incluso hoy en día es uno de los programas con mayor uso y preferido por parte
de los programadores.
13
En 1996 surge un desarrollo llamado JAVA (extensión de C++). Su filosofía es aprovechar el
software existente, facilitar la adaptación del mismo a otros usos diferentes a los originales sin
necesidad de modificar el código ya existente.
La POO se define como un paradigma de la programación, fue una revolución en los años 80,
aportando una nueva visión del mundo de la programación al aportar un enfoque distinto a los
lenguajes tradicionales imperativos procedurales. La programación orientada a objetos
introdujo una nueva forma de organizar el código de un programa, agrupando por objetos, que
en sí son elementos individuales que contienen funciones e información, hoy en día no se
entiende la programación de apps para móviles o el desarrollo web de un nivel serio sin el uso
de un lenguaje POO.
Al programar orientado a objetos tenemos que aprender a pensar cómo resolver los problemas
de una manera distinta a como se realizaba anteriormente, en la programación estructurada.
Ahora tendremos que escribir nuestros programas en términos de clases, objetos, propiedades,
métodos.
4.3. Ventajas
4.4.1. Abstracción
Es cuando el usuario interactúa solo con los atributos y métodos seleccionados de un objeto,
utilizando herramientas simplificadas de alto nivel para acceder a un objeto completo. Este
concepto facilita el mantenimiento de un código de gran tamaño, donde pueden surgir
diferentes cambios a medida del tiempo.
14
4.4.2. Encapsulación
Contiene toda la información importante de un objeto dentro del mismo y solo expone la
información seleccionada al mundo exterior. Esto lo que permite es asegurar que la
información de un objeto esté oculta para el mundo exterior, agrupando en una clase las
características o atributos que cuenten con un acceso privado, y los comportamientos o
métodos que presenten un acceso público.
4.4.3. Ocultación
Se refiere a que los atributos privados de un objeto no pueden ser modificados ni obtenidos a
no ser que se haga a través del paso de un mensaje (invocación a métodos, ya sean estos
funciones o procedimientos).
4.4.4. Modularidad
La modularidad es, en programación modular y más específicamente en programación
orientada a objetos, la propiedad que permite subdividir una aplicación en partes más
pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea
posible de la aplicación en sí y de las partes restantes.
4.4.5. Herencia
Define relaciones jerárquicas entre clases, de forma que los atributos y métodos puedan ser
reutilizados. Las clases principales extienden atributos y comportamientos a las clases
secundarias. Este método da paso a crear clases secundarias, ampliando así la funcionalidad
de la clase principal y agregando atributos y comportamientos adicionales.
4.4.6. Polimorfismo
Consiste en diseñar objetos para compartir comportamientos, lo que nos permite procesar
objetos de diferentes maneras. Es la capacidad de presentar la misma interfaz para diferentes
tipos de datos. Este permite que el mismo método ejecute diferentes comportamientos de dos
formas: Anulación de método y sobrecarga de método.
4.5. Ejemplos
Polimorfismo: tiene un teléfono inteligente para comunicarse. El modo de
comunicación que elijas podría ser cualquier cosa. Puede ser una llamada, un mensaje
de texto, un mensaje de foto, correo, etc. Por lo tanto, el objetivo es común que sea la
comunicación, pero su enfoque es diferente. Esto se llama polimorfismo.
Herencia: Supongamos una clase Vehículo como la clase base de una clase Coche.
Podemos decir que un Coche es un Vehículo pero un Vehículo no siempre es un
Coche, puede ser una moto, un camión, etc.
15
Dentro de una clase se definen los datos y el código que actúa sobre esos datos. El código está
contenido en métodos. Debido a que las clases, los objetos y los métodos son fundamentales
para Java.
4.6.2. Objeto
Los objetos se crean a partir de clases, y las clases sirven como plantillas para crear objetos. A
los objetos también se les llama instancias de clase.
Utilicemos una analogía. Piensa en la palabra persona. Cuando hablamos de una persona no
nos referimos a ninguna persona en particular, solo a la idea de la persona. Una persona tiene
un nombre, una edad, una estatura, etc. Esa es la clase, la plantilla.
Ahora piensa en personas específicas: tú, tu mamá, el presidente de tu país, Alan Turing,
Nelson Mandela, etc. Esos son los objetos. Para cada persona puedes llenar los datos de la
plantilla: el nombre, la edad, la estatura, etc.
4.6.3. Atributos
Información de un objeto. Así como un objeto tiene un comportamiento, los objetos también
pueden tener información, o atributos (hablo de objeto y no de clase porque, aunque los
métodos se definen en la clase, se llaman sobre los objetos).
Como decíamos antes, una persona puede tener un nombre, una edad, una estatura, etc. Esos
son los atributos.
Imagina a los atributos como variables que están asociadas a un objeto. De hecho, a los
atributos se les conoce como variables de instancia (instancia se refiere a un objeto, la
instancia de una clase).
4.6.4. Métodos
Los métodos son subrutinas que manipulan los datos definidos por la clase y, en muchos
casos, brindan acceso a esos datos. En la mayoría de los casos, otras partes de tu programa
interactuarán con una clase a través de sus métodos.
Un método contiene una o más declaraciones. En un código Java bien escrito, cada
método realiza solo una tarea. Cada método tiene un nombre, y es este el que se usa para
llamar al método. En general, puede dar el nombre que desee a un método cualquiera. Sin
embargo, recuerde que main() está reservado para el método que comienza ejecución de su
programa. Además, no use las palabras clave de Java para nombres de métodos.
4.6.5. Constructor
En Programación Orientada a Objetos (POO), un constructor es una subrutina cuya misión es
inicializar un objeto de una clase. En el constructor se asignan los valores iniciales del nuevo
objeto.
16
Se utiliza para crear tablas de clases virtuales y poder así desarrollar el polimorfismo, una de
las herramientas de la programación orientada a objetos. Al utilizar un constructor,
el compilador determina cuál de los objetos va a responder al mensaje (virtual) que hemos
creado. Tiene un tipo de acceso, un nombre y un paréntesis.
17
Imagen 23. Modificador de acceso
https://picodotdev.github.io/blog-bitix/2020/01/los-modificadores-de-acceso-de-clases-propiedades-y-metodos-en-java/
#:~:text=Los%20modificadores%20de%20acceso%20son,un%20modificador%20de%20acceso%20expl%C3%ADcitamente.
4.8. Composición
La composición consiste en crear una clase nueva agrupando objetos de clase que ya existen.
Una composición agrupa uno o más objetos para construir una clase, de manera que las
instancias de esta nueva clase contienen uno o más objetos de otras clases. Normalmente los
objetos contenidos se declaran con acceso private y se inicializan en el constructor de la clase.
La clase vehículo está compuesta de objetos de tipo String. Los atributos matricula, marca,
modelo y color en la realidad son objetos de la clase String.
18
Type[] objectName = new ClassName[];
Los esfuerzos de estos pensadores derivaron en la publicación de los documentos UML 0.9 y 0.91
en 1996. Pronto se hizo evidente que varias organizaciones, incluidas Microsoft, Oracle e IBM,
consideraron que UML era esencial para su propio desarrollo de negocios. Ellos, junto con
muchas otras personas y compañías, establecieron los recursos necesarios para desarrollar un
lenguaje de modelado hecho y derecho. "Los tres amigos" publicaron la Guía del usuario para el
Lenguaje Unificado de Modelado en 1999, y una actualización que incluye información sobre
UML 2.0 en la segunda edición de 2005.
El Lenguaje Unificado de Modelado (UML) fue creado para forjar un lenguaje de modelado
visual común y semántica y sintácticamente rico para la arquitectura, el diseño y la
implementación de sistemas de software complejos, tanto en estructura como en comportamiento.
UML tiene aplicaciones más allá del desarrollo de software, p. ej., en el flujo de procesos en la
fabricación.
5.3. Características
Es una especificación basada en n basada en Booch, OMT y OOSE, de all OMT y OOSE,
de allí sus principios.
Divide cada proyecto en un número de diagramas que representan los distintos diagramas
que representan las distintas vistas del proyecto y juntos representan las vistas del
proyecto y juntos representan la arquitectura del mismo.
Permite describir un sistema en diferentes Permite describir un sistema en diferentes
niveles de abstracción.
Se quiere convertir en un lenguaje estándar con el que sea posible modelar todos los con
el que sea posible modelar todos los componentes del desarrollo de una componentes del
desarrollo de una aplicación, sin definir un modelo de n, sin definir un modelo de
desarrollo.
19
La figura de clase en sí misma consiste en un rectángulo de tres filas. La fila superior contiene el
nombre de la clase, la fila del centro contiene los atributos de la clase y la última expresa los
métodos o las operaciones que la clase puede utilizar. Las clases y las subclases se agrupan para
mostrar la relación estática entre cada objeto.
Conclusiones:
Después de la breve investigación que se ha manejado en esta bitácora, abarcando la información en
diferentes sitios llegamos a la conclusión y puedo decir que java puede considerarse un lenguaje de
programación “Universal” en estos tiempos, debido a la alta capacidad de implementación en los
diferentes ámbitos. Por otro lado, la programación orientada a objetos (POO), es actualmente el
paradigma que más se utiliza para diseñar programas informáticos. Son demasiadas ventajas que nos
ofrece este paradigma para resolver desafíos de programación complejos. Permite una mejor
20
estructura de datos y reutilización del código, eso sí, se requiere pensar bien en la estructura del
programa con ayuda de herramientas como UML el cual es el que nos va a permitir describir el
comportamiento de un sistema mediante un diagrama de secuencia el cual muestra la interacción de
un conjunto de objetos en una aplicación a través del tiempo.
Referencias:
https://www.computerweekly.com/es/definicion/Programacion-orientada-a-objetos-OOP
https://es.wikipedia.org/wiki/Ocultaci%C3%B3n_de_informaci%C3%B3n#:~:text=En
%20programaci%C3%B3n%20orientada%20a%20objetos,sean%20estos%20funciones%20o
%20procedimientos).
https://es.wikipedia.org/wiki/Modularidad_(inform%C3%A1tica)#:~:text=La
%20modularidad%20es%2C%20en%20programaci%C3%B3n,y%20de%20las%20partes
%20restantes.
https://guru99.es/javaconstructors/#:~:text=La%20sobrecarga%20de%20constructor%20es,la
%20lista%20y%20su%20tipo.
https://makeitrealcamp.gitbook.io/programacion-orientada-por-objetos-en-ruby/clases-y-
objetos
https://picodotdev.github.io/blog-bitix/2020/01/los-modificadores-de-acceso-de-clases-
propiedades-y-metodos-en-java/#:~:text=Los%20modificadores%20de%20acceso%20son,un
%20modificador%20de%20acceso%20expl%C3%ADcitamente.
https://guru99.es/java-constructors/#:~:text=La%20sobrecarga%20de%20constructor
%20es,la%20lista%20y%20su%20tipo.
https://www.delftstack.com/es/howto/java/java-array-of-objects/
https://www.discoduroderoer.es/metodos-get-y-set-en-java/#:~:text=Los%20m
%C3%A9todos%20get%20y%20set%2C%20son%20simples%20m%C3%A9todos%20que
%20usamos,modificar%20desde%20fuera%20la%20clase.
https://es.wikipedia.org/wiki/Constructor_(inform%C3%A1tica)
https://www.lucidchart.com/pages/es/que-es-el-lenguaje-unificado-de-modelado-uml
https://www.lucidchart.com/pages/es/tutorial-de-diagrama-de-clases-uml
https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/diagrama-de-casos-de-uso/
21