Вы находитесь на странице: 1из 77

Encabezado: 1

BITACORA

OMAR FERNEY GARCIA CARO

20201578109

NOE ARCOS MUÑUZ

DOCENTE DE PROGRAMCION ORIENTADA A OBJETOS

UNIVERSIDAD DISTRITAL FRANSICO JOSE DE CALDAS

Facultad Tecnológica

Cundinamarca, Bogotá D.C

2020
2

TABLA DE CONTENIDO

1………………………………………………………………………………………5

1.1. …………………………………………………………………………………...6

1.2. …………………………………………………………………………………...6

1.2.1. …………………………………………………………………………………8

1.2.2. …………………………………………………………………………………8

1.2.3. …………………………………………………………………………………10

1.2.4. …………………………………………………………………………………10

12.5. ………………………………………………………………………………….11

2. ……………………………………………………………………………………..11

2.1…………………………………………………………………………………….11

2.2…………………………………………………………………………………….12

2.3…………………………………………………………………………………….13

2.4…………………………………………………………………………………….15

3. ……………………………………………………………………………………..15

3.1…………………………………………………………………………………….18

3.2. …………………………………………………………………………………...18

3.3…………………………………………………………………………………….19

3.4…………………………………………………………………………………….22

3.4.1…………………………………………………………………………………..22
3

3.5…………………………………………………………………………………….22

3.6…………………………………………………………………………………….23

3.7…………………………………………………………………………………….24

3.7.1…………………………………………………………………………………..24

3.7.2…………………………………………………………………………………..25

3.7.3…………………………………………………………………………………..25

3.7.4…………………………………………………………………………………..26

3.7.5…………………………………………………………………………………..27

4. ……………………………………………………………………………………..27

4.1…………………………………………………………………………………….29

4.2…………………………………………………………………………………….34

4.3…………………………………………………………………………………….34

4.4. …………………………………………………………………………………...36

4.4.1…………………………………………………………………………………..36

4.4.2…………………………………………………………………………………..36

4.4.3…………………………………………………………………………………..36

4.4.4. …………………………………………………………………………………37

4.4.5. …………………………………………………………………………………37

4.4.6…………………………………………………………………………………..38

4.5. …………………………………………………………………………………...38

4.6…………………………………………………………………………………….41

4.6.1…………………………………………………………………………………..41

4.6.2…………………………………………………………………………………..42

4.6.3…………………………………………………………………………………..42

4.6.4…………………………………………………………………………………..42
4

4.6.5…………………………………………………………………………………..43

4.6.6…………………………………………………………………………………..43

4.6.7…………………………………………………………………………………..43

4.7…………………………………………………………………………………….44

4.8…………………………………………………………………………………….44

4.9…………………………………………………………………………………….45

5. ……………………………………………………………………………………..45

5.1…………………………………………………………………………………….46

5.2…………………………………………………………………………………….49

5.3…………………………………………………………………………………….50

5.4…………………………………………………………………………………….59

5.5. …………………………………………………………………………………...60

5.6. …………………………………………………………………………………...61

5.6.1…………………………………………………………………………………..61

Referencias bibliográficas………………………………………………………...62-66

Conclusiones……………………………………………………………………...67-77
5

1. INTRODUCCIÓN A LA PROGRAMACIÓN

1.1. Lightbot

https://www.minijuegos.com/juego/light-bot
Lightbot es un juego que desarrolla las habilidades tanto de programación como lógicas. El
objetivo es programar el robot para que encienda las casillas azules que aparecen en el tablero
utilizando la menor cantidad de instrucciones posibles.

El juego posee un panel de control con comandos como “girar”, “saltar”, “encender”,
“apagar”, etc., que pondrán a nuestro robot en movimiento y de esa manera superar los doce
niveles.

El mayor problema se presenta cuando nos quedamos sin casillas en el panel de control
principal, por lo que tendremos que comenzar a utilizar funciones, por medio de los
comandos “F1” y “F2” que nos permitirán añadir hasta 8 movimientos más a cada función.
Lightboot puede ser utilizado por los niños a partir de los seis años si ya han sido
alfabetizados.
6

1.2. Recursos de software para desarrollo

La Segunda tarea de la planificación del desarrollo de Software es la estimación de los


recursos requeridos para acometer el esfuerzo de desarrollo de Software, esto simula a una
pirámide donde las Herramientas (hardware y Software), son la base proporciona la
infraestructura de soporte al esfuerzo de desarrollo, en segundo nivel de la pirámide se
encuentran los Componentes reutilizables.
Y en la parte más alta de la pirámide se encuentra el recurso primario, las personas (el recurso
humano).
Cada recurso queda especificado mediante cuatro características:
• Descripción del Recurso.
• Informes de disponibilidad.
• Fecha cronológica en la que se requiere el recurso.

• Tiempo durante el que será aplicado el recurso.

1.2.1. Devc++

https://www.embarcadero.com/es/free-tools/dev-cpp
Embarcadero Dev-C++ es una nueva y mejorada versión (patrocinada por Embarcadero) de
Bloodshed Dev-C++ y Orwell Dev-C++. Es un completo entorno de desarrollo integrado
(IDE) y editor de código para el lenguaje de programación C/C++. Utiliza el puerto Mingw
de GCC (Colección de Compiladores GNU) como su compilador. Embarcadero Dev-C++
7

también puede ser usado junto con Cygwin o cualquier otro compilador basado en GCC.
Embarcadero Dev-C++ está construido con la última versión de Embarcadero Delphi.
Embarcadero Dev-C++ ocupa poco espacio de memoria porque es una aplicación nativa de
Windows y no usa Electrón.

Dev-C++ es un compilador y entorno de desarrollo para el lenguaje C/C++. Se trata de una


aplicación de código abierto, que ofrece todo tipo de facilidades para desarrollar grandes
proyectos en C++. La aplicación presenta resaltado de sintaxis, depurador, una utilidad para
crear instalaciones de nuestros programas, docenas de librerías y ficheros de ejemplo, etc.
Como opciones extra, Dev-C++ incluye múltiples idiomas (incluido el español), explorador
de clases y variables, plantillas, facilidad para instalar librerías adicionales, etc. Todo esto
sólo es una pequeña parte de las posibilidades que se pueden encontrar en Dev-C++, un
entorno de programación verdaderamente recomendable para desarrolladores de cualquier
nivel.
Entre otras ventajas desde el punto de vista técnico se puede señalar, que permite importar los
proyectos realizados anteriormente en MS Visual C++, se puede exportar código fuente o
proyectos a HTML o RTF para subir códigos a páginas Web y compartirlos, se pueden
insertar marcadores en el editor para desplazarse en el código rápidamente, cada usuario
puede crear su propia sintaxis coloreada, se puede configurar el menú insertar para colocar
los fragmentos de código que mas uno utilice, permite insertar nuevos compiladores para
compilar códigos fuente, tiene una potente característica de autocompletar texto que permite
aumentar la productividad al sugerir los comandos disponibles en el contexto en que uno se
encuentra programando, tiene un explorador de clases que muestra las clases, miembros y
funciones y por otro lado la información relevante al archivo mostrado en el editor, se pueden
añadir carpetas personales en el explorador de clases para encontrar lo que se busca en los
grande proyectos, se puede guardar un proyecto como una plantilla de esta forma se puede
comenzar a programar con una base en función a sus necesidades.

En muchas ocasiones al enfrentarnos a la tarea de la enseñanza del lenguaje de


programación C++ y a la hora de impartirlo se debe decidir que IDE (entorno de desarrollo
integrado del inglés Integrated Development Environment) usar en clases, podría ser una
opción el C++ Builder, que es un IDE creado por la empresa Borland, pero es un software
propietario y además ocupa un tamaño en disco enorme por la cantidad de posibilidades que
ofrece y que muchas veces no es necesario utilizar ya que los fundamentos de programación
8

no exigen grandes prestaciones. Es por eso que una aplicación pequeña y que forme parte de
los software de plataforma de código abierto constituye una buena opción, siendo el software
tratado en este artículo (Dev-C++) una herramienta a tener en cuenta en estas circunstancias.

1.2.2. Diagrams.net
Diagrams.net es una aplicación web gratuita y de código abierto que te permite crear una gran
variedad de diagramas desde cualquier navegador web. La herramienta también posee una
versión de escritorio disponible para Windows, Linux y macOS.

Con esta herramienta puedes crear y editar una gran variedad de diagramas como: diagramas
de flujo, diagramas entidad-relación, diagramas UML, organigramas, diagramas de procesos,
mapas mentales, modelos de procesos de negocios, entre otros. Permite agregar imágenes,
configurar los textos, elegir el tipo de fuente, cambiar el idioma y además puedes guardar tu
archivo para configurarlo después. Asimismo, incorpora notaciones matemáticas y capas que
facilitan la edición

1.2.3 NetBeans

https://sites.google.com/site/portafolionetbeans/que-es-netbeans
NetBeans es un programa que sirve como IDE (un entorno de desarrollo integrado) que nos
permite programar en diversos lenguajes.
9

El desarrollo de software se ha diversificado mucho basándonos en la cantidad de lenguajes


que existen para la programación. Sin embargo, hay lenguajes que van imponiéndose como
estándares, entre ellos tenemos a Java, PHP, HTML, C++, C#, Ruby.
El problema que se presenta a la mayoría de los programadores es contar con un entorno de
desarrollo que sea completo, eficaz, fácil de usar y sea en lo posible gratuito. Todos esos
requerimientos los podemos encontrar en NetBeans.

NetBeans es ideal para trabajar con el lenguaje de desarrollo JAVA (y todos sus derivados),
así como también nos ofrece un excelente entorno para programar en PHP. También se puede
descargar una vez instalado NetBeans, los complementos para programar en C++. La IDE de
NetBeans es perfecta. Tiene un excelente balance entre una interfaz con múltiples opciones y
el editor puede autocompletar nuestro código.

NetBeans es un proyecto exitoso de código abierto con una gran base de usuarios, una
comunidad en constante crecimiento, y con cerca de 100 socios (¡y creciendo!) en todo el
mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans en junio 2000 y
continúa siendo el patrocinador principal de los proyectos.
Al día de hoy hay disponibles dos productos: el NetBeans IDE y NetBeans Platform.
NetBeans IDE es un entorno de desarrollo - una herramienta para que los programadores
puedan escribir, compilar, depurar y ejecutar programas. Está escrito en Java - pero puede
servir para cualquier otro lenguaje de programación. Existe además un número importante de
módulos para extender el NetBeans IDE. NetBeans IDE es un producto libre y gratuito sin
restricciones de uso.
También está disponible NetBeans Platform; una base modular y extensible usada como
estructura de integración para crear grandes aplicaciones de escritorio. Empresas
independientes asociadas, especializadas en desarrollo de software, proporcionan extensiones
adicionales que se integran fácilmente en la plataforma y que pueden también utilizarse para
desarrollar sus propias herramientas y soluciones.
Ambos productos son de código abierto y gratuitos para uso tanto comercial como no
comercial. El código fuente está disponible para su reutilización de acuerdo con la Common
Development and Distribution License ( CDDL) v1.0 and the GNU General Public License
(GPL) v2.
10

¿Qué es netbeans.org?
netbeans.org es el portal de la comunidad de código abierto de NetBeans dedicado a construir
un IDE de primera clase. netbeans.org permite a usuarios de más de 160 países de todo el
mundo estar en contacto con los recursos y los personas alrededor de NetBeans. Es posible
descargar desde aquí las últimas versiones de NetBeans, acceder a la documentación de
ayuda en línea, profundizar su conocimiento personal de Java, estar al corriente de las últimas
noticias, unirse a una lista de distribución, contribuir código, conocer las personas implicadas
en el proyecto, conocer gente, y mucho más.

1.2.4. JRE

JRE o Java Runtime Environment: un conjunto de herramientas que permite ejecutar código
compilado en Java. La noción de environment o ambiente donde viven los objetos está dado
por la JVM (Java Virtual Machine).

1.2.5 JDK
JDK o Java Development Kit: incluye al JRE y además le agrega herramientas propias para
desarrollar en Java: el compilador (javac), el generador de documentación html para las
clases (javadoc), el debugger (jdb), entre otros.
11

2. LENGUAJE C++

2.1. Palabras reservadas c++

http://c.conclase.net/curso/?cap=901

2.2. Vectores

Los vectores son una forma de almacenar datos que permiten contener una serie de valores
del mismo tipo, cada uno de los valores contenidos tiene una posición asociada que se usará
para accederlos. Está posición o índice será siempre un número entero positivo.

En C la cantidad de elementos que podrá contener un vector es fijo, y en principio se define


cuando se declara el vector.

Un array o arreglo (lista o tabla) es una secuencia de datos del mismo tipo. Los datos se
llaman elementos del array y se numeran consecutivamente 0, 1, 2, 3 ... El tipo de elementos
almacenados en el array puede ser cualquier dato simple de Java o de un tipo previamente
declarado como una clase. Normalmente, el array se utiliza para almacenar tipos tales como
char, int o float.
12

Un array puede contener, por ejemplo, la edad de los alumnos de una clase, las temperaturas
de cada día de un mes en una ciudad determinada o el número de personas que residen en
cada una de las diecisiete comunidades autónomas españolas. Cada ítem del array se
denomina elemento.

Los elementos de un array se numeran, como ya se ha comentado, consecutivamente 0, 1,


2,3,... Estos números se denominan valores índice o subíndice del array. El término
“subíndice” se utiliza ya que especifica, igual que en matemáticas, una secuencia tal como a0,
a1, a2... Estos números localizan la posición del elemento dentro del array, proporcionando
acceso directo al array.

Si el nombre del array es a, entonces a[0] es el nombre del elemento que está en la posición 0,
a[1] es el nombre del elemento que está en la posición 1, etc. En general, el elemento i-ésimo
está en la posición i-1, de modo que si el array tiene n elementos, sus nombres son
a[0],a[1],...,a[n-1]. Gráficamente, se representa así el array a con seis elementos.

https://es.wikibooks.org/wiki/Programación_en_C/Vectores

2.3. Las torres de Hanoi


El rompecabezas de la Torre de Hanoi fue inventado por el matemático francés Edouard
Lucas en 1883. Se inspiró en una leyenda acerca de un templo hindú donde el rompecabezas
fue presentado a los jóvenes sacerdotes. Al principio de los tiempos, a los sacerdotes se les
dieron tres postes y una pila de 64 discos de oro, cada disco un poco más pequeño que el de
debajo. Su misión era transferir los 64 discos de uno de los tres postes a otro, con dos
limitaciones importantes. Sólo podían mover un disco a la vez, y nunca podían colocar un
disco más grande encima de uno más pequeño. Los sacerdotes trabajaban muy
eficientemente, día y noche, moviendo un disco cada segundo. Cuando terminaran su trabajo,
dice la leyenda, el templo se desmenuzaría en polvo y el mundo se desvanecería.
13

Aunque la leyenda es interesante, usted no tiene que preocuparse de que el final del mundo
ocurra pronto en cualquier momento. El número de movimientos necesarios para mover
correctamente una torre de 64 discos
es 264−1=18,446,744,073,709,551,615264−1=18,446,744,073,709,551,615. A una velocidad
de un movimiento por segundo, ¡eso sería 584,942,417,355584,942,417,355 años!
Claramente hay algo más en este rompecabezas de lo que parece.

https://runestone.academy/runestone/static/pythoned/Recursion/LasTorresDeHanoi.html
14

2.4. Matrices

Las matrices o como algunos las llaman "arreglos multidimensionales" son una estructura de
datos bastante similar a los vectores o arreglos. De hecho, una matriz no es más que una serie
de vectores contenidos uno en el otro (u otros), es decir, una matriz es un vector cuyas
posiciones son otros vectores. Hablemos con más detalle de esto para quedar más claros.

Un array en Java puede tener más de una dimensión. El caso más general son los arrays
bidimensionales también llamados matrices o tablas.
La dimensión de un array la determina el número de índices necesarios para acceder a sus
elementos.
Los vectores que hemos visto en otra entrada anterior son arrays unidimensionales porque solo
utilizan un índice para acceder a cada elemento.
Una matriz necesita dos índices para acceder a sus elementos. Gráficamente podemos
representar una matriz como una tabla de n filas y m columnas cuyos elementos son todos del
mismo tipo
Se crean de forma similar a los arrays unidimensionales, añadiendo un índice.
Por ejemplo:
matriz de datos de tipo int llamado ventas de 4 filas y 6 columnas:
int [][] ventas = new int[4][6];
matriz de datos double llamado temperaturas de 3 filas y 4 columnas:
double [][] temperaturas = new double[3][4];
En Java se pueden crear arrays irregulares en los que el número de elementos de cada fila es
variable. Solo es obligatorio indicar el número de filas.
Por ejemplo:
int [][] m = new int[3][];
crea una matriz m de 3 filas.
A cada fila se le puede asignar un número distinto de columnas:
m[0] = new int[3];
m[1] = new int[5];
m[2] = new int[2];
Gráficamente podemos representar la disposición real en memoria del array anterior así:
15

http://puntocomnoesunlenguaje.blogspot.com/2012/12/matriz-en-java.html

3. LENGUAJE JAVA

http://www.manualweb.net/java/historiajava/#:~:text=El%20lenguaje%20Java%20fue%20de
sarrollado,Java%2C%20corría%20el%20año%201996.

3.1 Historia del lenguaje Java

El lenguaje Java fue desarrollado en sus inicios por James Gosling, en el año 1991.
Inicialmente Java era conocido como Oak o Green.

La primera versión del lenguaje Java es publicada por Sun Microsystems en 1995. Y es en la
versión del lenguaje JDK 1.0.2, cuando pasa a llamarse Java, corría el año 1996.

En las primeras versiones de Java 1.1, 1.2 y 1.3 es en la que el lenguaje va tomando forma,
con la inclusión de tecnologías como JavaBeans, JDBC para el acceso a base de
datos, RMI para las invocaciones en remoto, Collections para la gestión de múltiples
estructuras de datos o AWT para el desarrollo gráfico, entre otros.
16

Java Community Process (JCP)

La versión Java 1.4 pasa a ser la primera versión gestionada por la comunidad mediante
el Java Community Process (JCP).

Se trabaja con Java Specification Requests (JSRs) que son las nuevas funcionalidades que se
busca que tenga el lenguaje.

Java 1.4 se liberaba como JSR 59, corría el año 2002. ALgunas de las características que
contenía eran: librería NIO para IO no bloqueante, JAXP para el procesado
de XML y XSLT o el API para preferencias.

Java 5

En 2004 se estaba trabajando con la versión Java 1.5, pero con vistas a reflejar el nivel de
madurez de la plataforma Java se renombra a Java 5.

A partir de este momento se identifica el JDK con la versión 1.x, mientras que la
plataforma Java sigue con la nueva política de versionado.

Así JDK 1.5 corresponde con Java 5 , JDK 1.6 corresponde con Java 6 ,… y así
sucesivamente.

Dentro de Java 5 podemos encontrar el uso de genéricos, el autoboxing/unboxing entre tipos


de datos primitivos y sus clases, el uso de enumerados y la aparición del bucle for-each.

Java 6

En el año 2006 aparece la versión Java 6 en la que podíamos encontrar cosas como el soporte
de lenguajes de script, facilidades para la exposición y consumo de webservices
mediante JAX-WS, nuevos tipos de drivers con JDBC 4 y la versión 2 de JAXB.

Java como Open Source

Una de las cosas que sucede en noviembre 2006 es que Sun Microsystems lo convierte en
Open Source mediante una licencia GNU General Public License (GPL).

Dando lugar en mayo 2008 a lo que se conoce como OpenJDK, con OpenJDK 6.
17

Java 7

Llegado julio de 2011 ve la luz Java 7, la cual trae como novedades el soporte de lenguajes
dinámicos, dotando a la JVM de un soporte de mútiples lenguajes y una nueva librería I/O
para el manejo de ficheros.

También aparecen cosas menores, pero muy útiles como el manejo de String dentro de la
validación en una estructura switch o la capacidad de poner subrayados en los números para
que se puedan leer mejor.

Versión actual: Java 8

La última versión de Java distribuida es Java 8, aparecida en marzo de 2014.

Entre las características de Java 8 tenemos el soporte expresiones Lambda y uso de Streams,
que permiten un estilo más funcional para los programas Java. Dentro de este enfoque más
funcional también aparecen las transformaciones MapReduce.

Ve la luz el Proyecto Nashorn para disponer de un engine Javascript y así poder incluir este
lenguaje dentro de las aplicaciones Java.

Otras cosas son un nuevo API Date y Time y la inclusión de JavaFX 8 dentro de la JDK
de Java.

Java 9

Aunque en el roadmap se esperaba que Java 9 estuviera disponible para el 2016, los
problemas de seguridad encontrados dentro de la plataforma han causado que se vaya
demorando.

La fecha prevista para disponer de Java 9 es julio 2017.

Dentro de esta versión podremos encontrar el Project Jigsaw que establece la modularización
de la JDK, el Java Shell con el que podremos trabajar e interactuar al estilo RELP (Read–
eval–print loop), soporte para http 2.0
18

3.2. Máquina virtual de Java

Los lenguajes de programación de alto nivel como C, C++, Java o Python, por citar unos pocos,
sirven para comunicarse con una computadora mediante algo más fácil de entender para un
humano que el "lenguaje máquina" o el lenguaje ensamblador, que está muy cercano a la
máquina. Estos lenguajes se llaman "de alto nivel" porque están en un nivel de abstracción
mucho mayor que el que ofrece un ordenador: tienen bucles, condicionales, matrices, tipos de
datos...
Tradicionalmente, el compilador de un lenguaje de alto nivel se encargaba de traducir ese
lenguaje "sencillo" en lenguaje máquina, directamente utilizable por el computador a través del
sistema operativo. Es decir, cuando compilamos un programa en C++ lo que obtenemos es un
programa ejecutable, por ejemplo, para Windows, que este sistema operativo es capaz de
ejecutar directamente contra el procesador, en un lenguaje "entendible" por este.
Sin embargo, muchos lenguajes modernos como Java o C# (y otros lenguajes de la
plataforma .NET), lo que hacen es utilizar un paso intermedio entre estos dos estados: entre el
código de alto nivel en el que escribimos las aplicaciones y el de bajo nivel que sale del proceso
de compilación
3.3 API de java
El API de Java está formado por una amplísima jerarquía de clases que cubren una gran
cantidad de aspectos relacionados con el desarrollo de software en general. Esta organizado
en packages ordenados por temas. El J2SE (Java 2 Standard Edition) permite la utilización de
todos estos packages en el desarrollo de programas Java y el JRE (Java Runtime
Environment) permite la ejecución de programas que usan cualquiera de las clases del API.
La documentación que acompaña al J2SE contiene un manual de referencia completo
ordenado por packages y clases de todo el contenido del API. Su consulta resulta
imprescindible para cualquier desarrollo.
El API de Java es vastísimo. La versión actual (1.3) contiene 76 packages y
aproximadamente 2000 elementos entre clases, interfaces, excepciones, etc. Por tanto, el
conocimiento en profundidad del API no es tarea trivial, pero a la vez es imprescindible si se
quieren abordar desarrollos extensos. La aproximación debe realizarse de forma progresiva,
teniendo un conocimiento general de las capacidades globales del API, para ir adquiriendo
una mayor especialización en función de las necesidades. Antes de intentar resolver cada
problema de programación es conveniente reflexionar que packages del API pueden
ayudarnos a resolverlo (si es que no está resuelto completamente).
19

La nomenclatura de los packages es uniforme y ayuda a categorizar las clases. El primer


calificador es java o javax (para las clases dedicadas al interface gráfica). Escapan a esta
norma las dedicadas a CORBA y materias afines. El segundo calificador da idea de la materia
que cubre el package, como io (entrada/salida), math (funciones matemáticas). Hay temas
que contienen varios subpackages, con un tercer calificador más específico (por ejemplo,
javax.sound.midi, que es bastante auto explicativo).
bucles, condicionales, matrices, tipos de datos...

La API Java es una interfaz de programación de aplicaciones (API, por sus siglas
del inglés: Application Programming Interface) provista por los creadores del lenguaje de
programación Java, que da a los programadores los medios para desarrollar aplicaciones Java.

Como el lenguaje Java es un lenguaje orientado a objetos, la API de Java provee de un


conjunto de clases utilitarias para efectuar toda clase de tareas necesarias dentro de un
programa.

La API Java está organizada en paquetes lógicos, donde cada paquete contiene un conjunto
de clases relacionadas semánticamente.

3.4. Tipos de datos, variables y arreglos


Una variable en Java es un identificador que representa una palabra de memoria que contiene
información. El tipo de información almacenado en una variable sólo puede ser del tipo con
que se declaró esa variable.
Una variable se declara usando la misma sintaxis de C. Por ejemplo la siguiente tabla indica
una declaración, el nombre de la variable introducida y el tipo de información que almacena
la variable:

Declaración identificador tipo

int i; i entero

String s; s referencia a string

int a[]; a referencia a arreglo de enteros

int[] b; b referencia a arreglo de enteros

https://users.dcc.uchile.cl/~lmateu/Java/Apuntes/tiposprim.htm
20

Java posee dos grandes categorías de tipos para las variables:

Tipos Primitivos referencias a Objetos

int, short, byte, long Strings

char, boolean Arreglos

float, double otros objetos

https://users.dcc.uchile.cl/~lmateu/Java/Apuntes/tiposprim.htm
Las variables de tipos primitivos almacenan directamente un valor que siempre pertenece al
rango de ese tipo. Por ejemplo una variable int almacena un valor entero como 1, 2, 0, -1, etc.
Esto significa que al asignar una variable entera a otra variable entera, se copia el valor de la
primera en el espacio que ocupa la segunda variable.
Las variables de tipo referencia a objetos en cambio almacenan direcciones y no valores
directamente. Una referencia a un objeto es la dirección de un área en memoria destinada a
representar ese objeto. El área de memoria se solicita con el operador new.
Al asignar una variable de tipo referencia a objeto a otra variable se asigna la dirección y no
el objeto referenciado por esa dirección. Esto significa que ambas variables quedan
refenciando el mismo objeto.
La diferencia entre ambas asignaciones se observa en la siguiente figura:

https://users.dcc.uchile.cl/~lmateu/Java/Apuntes/tiposprim.htm
21

Esto tiene implicancias mayores ya que si se modifica el objeto referenciado por r, entonces
también se modifica el objeto referenciado por s, puesto que son el mismo objeto.
En Java una variable no puede almacenar directamente un objeto, como ocurre en C y C++.
Por lo tanto cuando se dice en Java que una variable es un string, lo que se quiere decir en
realidad es que la variable es una referencia a un string.

Tipos primitivos
En la siguiente tabla se indica para cada tipo primitivo el número de bits que se emplea en su
representación y el rango de valores que se puede almacenar en las variables de estos tipos.

Tipo Bits Rango Ejemplos

int 32 -2**31 .. 2**31-1 0, 1, 5, -120, ...

short 16 -2**15 .. 2**15-1 0, 1, 5, -120, ...

byte 8 -2**7 .. 2**7-1 0, 1, 5, -120, ...

long 64 -2**63 .. 2**63-1 0, 1, 5, -120, ...

boolean 1 n/a false, true

char 16 n/a 'a', 'A', '0', '*', ...

float 32 IEEE 1.2

double 64 IEEE 1.2

https://users.dcc.uchile.cl/~lmateu/Java/Apuntes/tiposprim.htm

Se dice que un tipo A es de mayor rango que un tipo B si A es un superconjunto de B. Esto


quiere decir que las variales de tipo B siempre se pueden asignar a variables de tipo A
(eventualmente con pérdida de significancia).
Por ejemplo int es de mayor rango que short, que a su vez es de mayor rango que byte. Float
y double son de mayor rango que int. Double es de mayor rango que float.
Esto se puede resumir en:
double > float > long > int > short > byte
22

3.4.1 Declaración de variables java

Las variables Java son un espacio de memoria en el que guardamos un determinado valor (o
dato). Para definir una variable seguiremos la estructura:

Java es un lenguaje de tipado estático. Por lo cual todas las variables tendrán un tipo de dato
(ya sea un tipo de dato primitivo o una clase) y un nombre de identificador.

El tipo de dato se asignará a la hora de definir la variable. Además, en el caso de que las
variables sean propiedades de objetos tendrán una privacidad.

3.5. Estructuras de Control

En programación, las estructuras de control permiten modificar el flujo de ejecución de las


instrucciones de un programa.

Con las estructuras de control se puede:

• De acuerdo con una condición, ejecutar un grupo u otro de sentencias (If-Then-Else)


• De acuerdo con el valor de una variable, ejecutar un grupo u otro de sentencias
(Select-Case)
• Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-While)
• Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until)
• Ejecutar un grupo de sentencias un número determinado de veces (For-Next)

Todos los lenguajes de programación modernos tienen estructuras de control similares.


Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es su
sintaxis; cada lenguaje tiene una sintaxis propia para expresar la estructura.

3.6. Palabras Reservadas

En el lenguaje de programación Java, una palabra clave es cualquiera de las 57 palabras


reservadas que tienen un significado predefinido en el lenguaje; debido a esto, los
programadores no pueden usar palabras clave como nombres para variables, métodos, clases
o como cualquier otro identificador. De estas 57 palabras clave, 55 están en uso y 2 no están
en uso. Debido a sus funciones especiales en el lenguaje, la mayoría de los entornos de
desarrollo integrados para Java utilizan el resaltado de sintaxis para mostrar palabras clave en
un color diferente para una fácil identificación.
23

En este capítulo tenéis un listado de las palabras reservadas de Java orientado a objetos.
Las palabras reservadas son identificadores, pero como su nombre indica, estas palabras están
reservadas, y no se pueden usar como identificadores de usuario.

https://www.ciberaula.com/cursos/java/palabras_reservadas_java.php

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. El tipo de valor devuelto tras la evaluación
depende del operador y del tipo de los operandos. Por ejemplo, los
operadores aritméticos trabajan con operandos numéricos, llevan a cabo operaciones
aritméticas básicas y devuelven el valor numérico correspondiente. Los operadores se pueden
clasificar en distintos grupos según se muestra en los siguientes apartados.
Se detalla con ejemplos todos los tipos de operadores que existen en Java. Como por
ejemplo: Operadores relacionales, aritméticos, lógicos, de asignación, entre otros.

Java proporciona muchos tipos de operadores que se pueden usar según la necesidad. Se
clasifican según la funcionalidad que brindan. Algunos de los tipos son los siguientes:

• Operadores aritméticos
• Operadores unarios
• Operador de asignación
• Operadores relacionales
• Operadores lógicos
• Operador ternario
24

• Operadores bit a bit


• Operadores shift
• Operador de instancia
• Precedencia y Asociatividad de Operadores

Vamos a echarles un vistazo en detalle a cada uno de ellos.

3.7.1 Operadores relacionados

Realizan comparaciones entre datos compatibles de tipos primitivos (numéricos,


carácter y booleanos) teniendo siempre un resultado booleano. Los operandos booleanos sólo
pueden emplear los operadores de igualdad y desigualdad.

https://www.arkaitzgarro.com/java/capitulo-4.html
3.7.2 Operadores aritméticos

Combinan un operador aritmético con el operador asignación. Como en el caso de los


operadores aritméticos pueden tener operandos numéricos enteros o reales y el tipo específico
de resultado numérico dependerá del tipo de éstos. En la siguiente tabla se resumen los
diferentes operadores de esta categoría.

https://www.arkaitzgarro.com/java/capitulo-4.html
25

3.7.3 Operadores Lógicos

En Java disponemos de los operadores lógicos habituales en lenguajes de programación como


son “es igual”, “es distinto”, menor, menor o igual, mayor, mayor o igual, and (y), or (o) y
not (no).

https://sites.google.com/site/unidad1hebervanegasuribe/unidad-3/java---operadores-y-tipos-
de-datos

3.7.4 Operadores de asignación

El operador asignación =, es un operador binario que asigna el valor del término de la


derecha al operando de la izquierda. El operando de la izquierda suele ser el identificador de
una variable. El término de la derecha es, en general, una expresión de un tipo de dato
compatible; en particular puede ser una constante u otra variable. Como caso particular, y a
diferencia de los demás operadores, este operador no se evalúa devolviendo un determinado
valor.
26

https://www.arkaitzgarro.com/java/capitulo-4.html

3.7.5 Operador ternario especial ‘?’

Calcular el mayor de dos números con Java es una cosa realmente sencilla con Java. Si
preguntas a cualquier programador te dirá que puedes utilizar un simple if-then-else.
Quedando un programa de pocas líneas.

Pero lo que, sorprendentemente, muchos programadores Java no saben, ¿es que existe un
operador condicional ternario ?: que nos ayuda a realizar estas operaciones con mucho menor
código.

¿La estructura del operador ternario ?: es la siguiente:

Donde a la variable resultado recibirá el valor1 en el caso de que la condición sea true o bien
el valor2 en el caso de que la condición sea false.
27

4. PROGRAMACIÓN ORIENTADA A OBJETOS

4.1 Historia de la programación orientada a objetos

http://www.manualweb.net/java/historia-

java/#:~:text=El%20lenguaje%20Java%20fue%20desarrollado,Java%2C%20corría%20el%2

0año%201996.

La Programación Orientación a Objetos (P.O.O.) surge en Noruega en 1967 con un lenguaje


llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl, en el centro de
cálculo noruego. Simula 67 introdujo por primera vez los conceptos de clases, corrutinas y
subclases (conceptos muy similares a los lenguajes Orientados a Objetos de hoy en día).El
nacimiento de la Programación Orientación a Objetos en Europa pasó inadvertido para gran
parte de los programadores. Hoy tenemos la Orientación a Objetos como un niño de 33 años
al que todos quieren bautizar.

Uno de los problemas de inicio de los años setentas era que pocos sistemas lograban
terminarse, pocos se terminaban con los requisitos iniciales y no todos los que se terminaban
cumpliendo con los requerimientos se usaban según lo planificado. El problema consistía en
cómo adaptar el software a nuevos requerimientos imposibles de haber sido planificados
inicialmente.
28

Este alto grado de planificación y previsión es contrario a la propia realidad. El hombre


aprende y crea a través de la experimentación, no de la planeación. La Orientación a Objetos
brinda estos métodos de experimentación, no exige la planificación de un proyecto por
completo antes de escribir la primera línea de código.

En los 70’s científicos del centro de investigación en Palo Alto Xerox (Xerox park)
inventaron el lenguaje Small talk que dio respuesta al problema anterior (investigar no
planificar).

Small talk fue el primer lenguaje Orientado a Objetos puro de los lenguajes Orientados a
Objetos, es decir, únicamente utiliza clases y objetos (Java usa tipos de datos primitivos, o
bien los Wrappers que son clases que encapsulan tipos de datos primitivos).

Quien tuvo la idea fue D. Parnas cuando propuso la disciplina de ocultar la información. Su
idea era encapsular cada una de las variables globales de la aplicación en un solo módulo
junto con sus operaciones asociadas, sólo mediante las cuales se podía tener acceso a esas
variables.

El resto de los módulos (objetos) podían acceder a las variables sólo de forma indirecta
mediante las operaciones diseñadas para tal efecto.

En los años 80’s Bjarne Stroustrup de AT&T Labs., amplió el lenguaje C para crear C++ que
soporta la programación Orientada a Objetos.

En esta misma década se desarrollaron otros lenguajes Orientados a Objetos como Objective
C, Common Lisp Object System (CIOS), object Pascal, Ada y otros.

Posteriores mejoras en herramientas y lanzamientos comerciales de C++ por distintos


fabricantes, justificaron la mayor atención hacia la programación Orientada a Objetos en la
comunidad de desarrollo de software. El desarrollo técnico del hardware y su disminución del
costo fue el detonante final. Con más computadoras al alcance de más personas más
programadores, más problemas y más algoritmos surgieron.
29

En el inicio de los 90’s se consolida la Orientación a Objetos como una de las mejores
maneras para resolver problemas. Aumenta la necesidad de generar prototipos más
rápidamente (concepto RAD Rapid Aplication Developments). Sin esperar a que los
requerimientos iniciales estén totalmente precisos.

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.

En 1997-98 se desarrollan herramientas ‘CASE’ orientadas a objetos (como el diseño asistido


por computadora).

Del 98 a la fecha se desarrolla la arquitectura de objetos distribuidos RMI, Corba, COM,


DCOM.

Actualmente la orientación a objetos parece ser el mejor paradigma, no obstante, no es una


solución a todos los problemas. Trata de eliminar la crisis del software. Entre los creadores de
metodologías orientadas a objetos se encuentran: G. Booch, Rambaught, Ivar Jacobson y
Peter Cheng.

4.2 Que es poo

La programación Orientada a objetos se define como un paradigma de la programación, una


manera de programar específica, donde se organiza el código en unidades denominadas
clases, de las cuales se crean objetos que se relacionan entre sí para conseguir los objetivos de
las aplicaciones.

La programación Orientada a objetos (POO) es una forma especial de programar, más


cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.

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 y otras cosas que veremos rápidamente para aclarar conceptos
y dar una pequeña base que permita soltarnos un poco con los conceptos de este tipo de
programación.
30

Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que
resolvían una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los
programadores puedan ser reutilizados se creó la posibilidad de utilizar módulos. El primer
módulo existente fue la función, que somos capaces de escribir una vez e invocar cualquier
número de veces.
Sin embargo, la función se centra mucho en aportar una funcionalidad dada, pero no tiene
tanto interés con los datos. Es cierto que la función puede recibir datos como parámetros,
pero los trata de una forma muy volatil. Simplemente hace su trabajo, procesando los
parámetros recibidos y devuelve una respuesta.
En las aplicaciones en realidad los datos están muy ligados a la funcionalidad. Por ejemplo
podemos imaginar un punto que se mueve por la pantalla. El punto tiene unas coordenadas y
podemos trasladarlo de una posición a otra, sumando o restando valores a sus coordenadas.
Antes de la programación orientada a objetos ocurría que cada coordenada del punto tenía
que guardarse en una variable diferente (dos variables para ser exacto: x, y) y las funciones
de traslación estaban almacenadas por otra parte. Esta situación no facilitaba la organización
del código ni tampoco su reutilización.
Con la Programación Orientada a Objetos se buscaba resolver estas situaciones, creando unas
mejores condiciones para poder desarrollar aplicaciones cada vez más complejas, sin que el
código se volviera un caos. Además, se pretendía dar una de pautas para realizar las cosas de
manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que
consigamos que el código se pueda reutilizar.
La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la
programa, de manera que la forma de hacer las cosas puede ser diferente según el
programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son
correctas, lo difícil no es programar orientado a objetos sino programar bien. Programar bien
es importante porque así nos podemos aprovechar de todas las ventajas de la POO.
Cómo se piensa en objetos
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por
ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO.
Diríamos que el coche es el elemento principal que tiene una serie de características, como
podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades
asociadas, como pueden ser ponerse en marcha, parar o aparcar.
31

Pues en un esquema POO "el coche" sería lo que se conoce como "Clase". Sus características,
como el color o el modelo, serían propiedades y las funcionalidades asociadas, como ponerse
en marcha o parar, serían métodos.
La clase es como un libro, que describe como son todos los objetos de un mismo tipo. La
clase coche describe cómo son todos sus coches, qué propiedades tienen y qué
funcionalidades deben poder realizar. A partir de una clase podemos crear cualquier número
de objetos de esa clase. Un coche rojo que es de la marca Ford y modelo Fiesta, otro verde
que es de la marca Seat y modelo Ibiza.
Por poner otro ejemplo vamos a ver cómo modelizaríamos en un esquema POO una fracción,
es decir, esa estructura matemática que tiene un numerador y un denominador que divide al
numerador, por ejemplo 3/2.
La fracción será la clase y tendrá dos propiedades, el numerador y el denominador. Luego
podría tener varios métodos como simplificarse, sumarse con otra fracción o número, restarse
con otra fracción, etc.
A partir de la definición de una fracción (la clase) podremos construir un número
indeterminado de objetos de tipo fracción. Por ejemplo podemos tener el objeto fracción 2/5
o 3/9, 4/3, etc. Todos esos son objetos de la clase fracción de números enteros.
Estas clases se podrán utilizar en los programas, por ejemplo en un programa de matemáticas
harás uso de la clase fracción y construirás muchos objetos de tipo fracción para hacer
cuentas diversas. En un programa que gestione un taller de coches utilizarás la clase coche y
se instanciarán diversos objetos de tipo coche para hacer las operativas.
En los lenguajes puramente orientados a objetos, tendremos únicamente clases y objetos. Las
clases permitirán definir un número indeterminado de objetos, que colaboran entre ellos para
resolver los problemas. Con muchos objetos de diferentes clases conseguiremos realizar las
acciones que se desean implementar en la funcionalidad de la aplicación. Además, las propias
aplicaciones como un todo, también serán definidas por medio de clases. Es decir, el taller de
coches será una clase, de la que podremos crear el objeto taller de coches, que utilizará
objetos coche, objetos de clase herramienta, objetos de clase mecánico, objetos de clase
recambio, etc.
Clases en POO
Como habrás podido entender, las clases son declaraciones de objetos, también se podrían
definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la
clase. Cuando programamos un objeto y definimos sus características y funcionalidades en
realidad lo que estamos haciendo es programar una clase. En los ejemplos anteriores en
32

realidad hablábamos de las clases coche o fracción porque sólo estuvimos definiendo, aunque
por encima, sus formas.
Propiedades en clases
Las propiedades o atributos son las características de los objetos. Cuando definimos
una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea
de que las propiedades son algo así como variables donde almacenamos datos relacionados
con los objetos.
Métodos en las clases
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las
clases las llamamos métodos. Los métodos son como funciones que están asociadas a un
objeto.
Objetos en POO
Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos
que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de
una clase se llama instanciar (que viene de una mala traducción de la palabra instace que en
inglés significa ejemplar). Por ejemplo, un objeto de la clase fracción es por ejemplo 3/5. El
concepto o definición de fracción sería la clase, pero cuando ya estamos hablando de una
fracción en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto.
Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta
dependiendo el lenguaje de programación que se emplee, pero será algo parecido a esto.

miCoche = new Coche()

Con la palabra "new" especificamos que se tiene que crear una instancia de la clase que sigue
a continuación. Dentro de los paréntesis podríamos colocar parámetros con los que inicializar
el objeto de la clase coche.
Estados en objetos
Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando
tenemos un coche la propiedad color tomará un valor en concreto, como por ejemplo rojo o
gris metalizado. El valor concreto de una propiedad de un objeto se llama estado.
Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador
punto.

miCoche.color = "rojo"
33

El objeto es miCoche, luego colocamos el operador punto y por último el nombre de la


propiedad a la que deseamos acceder. En este ejemplo estamos cambiando el estado de la
propiedad del objeto a "rojo" con una simple asignación.
Mensajes en objetos
Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por
ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el
mensaje "ponte en marcha".
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que
deseamos invocar y los paréntesis, como en las llamadas a las funciones.

miCoche.ponerseEnMarcha()

En este ejemplo pasamos el mensaje "ponerseEnMarcha" al objeto "miCoche". Hay que


colocar paréntesis igual que cualquier llamada a una función, dentro irían los parámetros, si
es que el método los requiere.
Más sobre la Programación Orientada a Objetos
Hay mucho todavía que conocer de la POO ya que sólo hemos hecho referencia a las cosas
más básicas. También existen mecanismos como la herencia y el polimorfismo que son unas
de las posibilidades más potentes de este paradigma de la programación.
La herencia sirve para crear objetos que incorporen propiedades y métodos de otros objetos.
Así podremos construir unos objetos a partir de otros sin tener que reescribirlo todo. Puedes
encontrar en DesarrolloWeb.com un artículo completo dedicado a la Herencia.
El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que estamos
trabajando, y abstraernos para definir un código que sea compatible con objetos de varios
tipos. Puedes acceder a otro artículo para saber más sobre Polimorfismo.
Son conceptos avanzados que cuesta explicar en las líneas de ese informe. No hay que olvidar
que existen libros enteros dedicados a la POO y aquí solo pretendemos dar un repaso a
algunas cosas para que os suenen cuando tengáis que poneros delante de ellas en los
lenguajes de programación. Sin embargo, si quieres saber más también puedes continuar
leyendo en DesarrolloWeb.com, en el manual de la teoría de la Programación orientada a
objetos.
34

4.3 Ventajas de poo

• Reusabilidad. Cuando hemos diseñado adecuadamente las clases, se pueden usar en


distintas partes del programa y en numerosos proyectos.
• Mantenibilidad. Debido a la sencillez para abstraer el problema, los programas
orientados a objetos son más sencillos de leer y comprender, pues nos permiten
ocultar detalles de implementación dejando visibles sólo aquellos detalles más
relevantes
• Modificabilidad. La facilidad de añadir, suprimir o modificar nuevos objetos nos
permite hacer modificaciones de una forma muy sencilla.
• Fiabilidad. Al dividir el problema en partes más pequeñas podemos probarlas de
manera independiente y aislar mucho más fácilmente los posibles errores que puedan
surgir.

La programación orientada a objetos presenta también algunas desventajas como pueden ser:

• Cambio en la forma de pensar de la programación tradicional a la orientada a objetos.

• La ejecución de programas orientados a objetos es más lenta.

• La necesidad de utilizar bibliotecas de clases obliga a su aprendizaje y entrenamiento.

4.4 Principios y característica de poo

La idea principal de la POO es que un sistema orientado a objetos es un conjunto de


objetos que interactúan entre sí y que están organizados en clases. Todos los lenguajes de
programación orientados a objetos proporcionan mecanismos que ayudan a implementar el
modelo orientado a objetos.

*Abstracción

Es el proceso de capturar los detalles fundamentales de un objeto mientras se suprimen o


ignoran detalles.
35

La abstracción proporciona un mecanismo crucial para permitir que las personas


comprendan, se comuniquen y razonen sistemas complejos.

*Encapsulamiento.

Es el proceso de ocultar todos los detalles de un objeto que no contribuyen a sus


carácterísticas esenciales.

La ventaja principal del encapsulamiento es que proporciona al programador libertad en la


implementación de los detalles del sistema. La única restricción que tendrá el programador
es mantener la interfaz abstracta que vean los usuarios externos.

*Polimorfismo.

Es la propiedad que permite enviar el mismo mensaje a objetos de diferentes clases, de


forma que cada uno de ellos responde a ese mismo mensaje de modo distinto dependiendo
de su implementación.

El polimorfismo como sobrecarga en Java ocurre cuando una clase T tiene múltiples
métodos con el mismo nombre, cada uno de ellos con una signatura (combinación de su
nombre y el tipo y número de argumentos que pasan por los métodos) diferente

*Herencia.

Es el proceso mediante el cual un objeto adquiere las propiedades de otro objeto.

Clases, Objetos y Mensajes

Clase: Es un prototipo o modelo que define los atributos y métodos comunes a todos los
objetos de cierto tipo.

Objeto: Es una instancia (un ejemplar, un caso concreto) de una clase.

Mensaje: La interacción entre objetos se produce mediante mensajes. Los mensajes son
llamados a métodos de un objeto en particular.
36

4.4.1 Abstracción

Es el proceso de capturar los detalles fundamentales de un objeto mientras se suprimen o


ignoran detalles. La abstracción proporciona un mecanismo crucial para permitir que las
personas comprendan, se comuniquen y razonen sistemas complejos.

4.4.2 Encapsulamiento.

Es el proceso de ocultar todos los detalles de un objeto que no contribuyen a sus


características esenciales. La ventaja principal del encapsulamiento es que proporciona al
programador libertad en la implementación de los detalles del sistema. La única restricción
que tendrá el programador es mantener la interfaz abstracta que vean los usuarios externos.

4.4.3. Modularidad

La modularidad consiste en dividir un programa en módulos que puedan compilarse por


separado, sin embargo, tendrá conexiones con otros módulos.

La modularidad también tiene principios y son los siguientes:

1. Capacidad de descomponer un sistema complejo.

2. Capacidad de componer a través de sus módulos.

3. Comprensión de sistema en partes.

4.4.4 Herencia

La herencia es específica de la programación orientada a objetos, donde una clase nueva se


crea a partir de una clase existente. La herencia (a la que habitualmente se denomina
subclase) proviene del hecho de que la subclase (la nueva clase creada) contiene las
atributos y métodos de la clase primaria. La principal ventaja de la herencia es la
capacidad para definir atributos y métodos nuevos para la subclase, que luego se aplican a
los atributos y métodos heredados.

Esta particularidad permite crear una estructura jerárquica de clases cada vez más
especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando desea
37

especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases
que ofrecen una base que puede especializarse a voluntad

4.4.5 Poliformlismo

El concepto de polimorfismo es en realidad algo muy básico. Realmente, cuando estamos


aprendiendo Programación Orientada a Objetos (también conocida por sus siglas POO /
OOP) muchos estudiantes nos hacemos un embolado tremendo al tratar de entender el
concepto, pero en su base es algo extremadamente sencillo.

Trataremos de explicarlo en este artículo con palabras sencillas, pero para los valientes, aquí
va una primera definición que no es mía y que carece de la prometida sencillez. Pero no te
preocupes, pues la entiendas o no, luego lo explicaré todo de manera más llana.

4.4.6 Encapsulamiento

Todos hemos oído hablar de la encapsulación de información en los lenguajes orientados a


objetos y en C++. Vamos a ver aquí en qué consiste y algunos "trucos" que podemos hacer en
el caso concreto de C++ y que no suelen venir en los libros de este lenguaje (aunque sí en
libros sobre patrones de diseño).

Conclusión

Este consiste en la ocultación de variables para una mejor rendición de la misma de forma
que al querer cambiar los valores de ellas solo se podrá atravesó de este termino
38

4.5. Ejemplos

Propia autoría

4.6. Elementos de POO

La programación orientada a objetos o POO consiste básicamente en el manejo de clases


organizadas para generar un programa, estas tienen atributos básicos y pueden generar
objetos con métodos y atributos específicos.

Pero observamos varios términos como Clases, Objetos, atributos y métodos, a continuación,
explicaremos cada uno de ellos y su relación

Objeto:

Se trata de un ente abstracto usado en programación que permite separar los diferentes
componentes de un programa, simplificando así su elaboración, depuración y posteriores
mejoras.
Los objetos integran, a diferencia de los métodos procedurales, tanto los procedimientos
como las variables y datos referentes al objeto.
A los objetos se les otorga ciertas características en la vida real. Cada parte del programa que
39

se desea realizar es tratado como objeto, siendo así estas partes independientes las unas de las
otras. Los objetos se componen de 3 partes fundamentales: metodos, eventos y atributos.

Métodos:

Son aquellas funciones que permite efectuar el objeto y que nos rinden algún tipo de servicio
durante el transcurso del programa.
Determinan a su vez como va a responder el objeto cuando recibe un mensaje.

Eventos:

Son aquellas acciones mediante las cuales el objeto reconoce que se está interactuando con él.
De esta forma el objeto se activa y responde al evento según lo programado en su código.

Atributos:

Características que aplican al objeto solo en el caso en que el sea visible en pantalla por el
usuario; entonces sus atributos son el aspecto que refleja, tanto en color, tamaño, posición, si
está o no habilitado.

Ejemplo de objeto: un coche.

Se considera un coche un objeto, totalmente diferenciado del alquitrán donde está aparcado.
Sus atributos son su color, marca, modelo, número de matrícula, número de puertas,...
Sus eventos todos aquellas acciones por las cuales si el coche tuviera vida propia reconocería
que le estamos dando un uso, como abrir la puerta, girar el volante, embragar, abrir el capot,
....
Los métodos son todo aquello que nos ofrece el coche como hacer sonar una bocina cuando
tocamos el claxon (evento), llevarnos por la carretera, reducir la velocidad al pisar el freno
(evento), ...

Mensajes:

Aunque los objetos se han de diferenciar claramente en una aplicación, estos se han de poder
comunicar para poder trabajar en conjunto y construir así aplicaciones.
Esto se hace posible a través de lo que se denomina paso de mensajes. Cuando un objeto
quiere comunicarse con otro lo que hace es enviarle un mensaje con los datos que desea
40

transmitir.
En el simil del coche, al apretar el claxon, el objeto claxon envía un mensaje a la bocina
indicándole que haga sonar cierto sonido.
La potencia de este sistema radica en que el objeto emisor no necesita saber la forma en que
el objeto receptor va a realizar la acción. Simplemente este la ejecuta y el emisor se
desentiende del como; de hecho ni le importa, solo tiene conocimiento de que se está
realizando.
Para que todo esto sea posible es necesario una buena programación de los eventos y de los
métodos de cada objeto.
El conjunto de mensajes a los que un objeto puede responder se denomina protocolo del
objeto.

Instancia:

Se llama instancia a todo objeto que derive de algún otro. De esta forma, todos los objetos
son instancias de algún otro, menos la clase Object que es la madre de todas.

Clases: Descripción de de objeto. Consta de una serie de métodos y datos que resumen las
características de este objeto. Definir clases permite trabajar con código reutilizable. Puesto
que desde una clase se puede crear una instancia y así reutilizar el código escrito para esta si
tener que volver a escribir el código para la instancia. La instancia toma el patrón de la clase
padre. Sin embargo, las variables son idependientes.

Herencia:

Mecanismo para compartir automáticamente métodos y datos entre classes, subclases y


objetos.
Permite crear nuevas clases introduciendo las variaciones con respecto a su clase padre.
Herencia simple: una subclase puede herecar datos y métodos de una clase simple así como
añadir o sustraer ciertos comportamientos.
Herencia múltiple:posibilidad de adquirir métodos y datos de varias clases simultáneamente.
41

Encapsulación:

Define el comportamiento de una clase u objeto que tiene dentro de él todo tipo de métodos y
datos pero que solo es accesible mediante el paso de mensajes. y los datos a través de los
métodos del objeto/clase.

Polimorfismo:

Los objetos responden a los mensajes que se les envían. Un mismo mensaje puede ser
interpretado o dar paso a distintas acciones según que objeto es el destinatario.
Con este sistema el emisor se desentiende de los detalles de la ejecución (aunque el
programador ha de saber en todo momento cuales son las consecuencias de ese mensaje).

Tiempo real durante el cual el objeto existe en memoria:

Los objetos se crean a medida que estos son requeridos (en vez de todos a la vez, con la
consiguiente pérdida de memoria) y se eliminan de la misma forma.

4.6.1 Objeto:

Se trata de un ente abstracto usado en programación que permite separar los diferentes
componentes de un programa, simplificando así su elaboración, depuración y posteriores
mejoras.
Los objetos integran, a diferencia de los métodos procedurales, tanto los procedimientos
como las variables y datos referentes al objeto.
A los objetos se les otorga ciertas características en la vida real. Cada parte del programa que
se desea realizar es tratado como objeto, siendo así estas partes independientes las unas de las
otras. Los objetos se componen de 3 partes fundamentales: métodos, eventos y atributos.

4.6.2, Métodos:

Son aquellas funciones que permite efectuar el objeto y que nos rinden algún tipo de servicio
durante el transcurso del programa.
Determinan a su vez como va a responder el objeto cuando recibe un mensaje
42

4.6.3. Eventos:

Son aquellas acciones mediante las cuales el objeto reconoce que se está interactuando con él.
De esta forma el objeto se activa y responde al evento según lo programado en su código.

4.6.4. Atributos:

Características que aplican al objeto solo en el caso en que él sea visible en pantalla por el
usuario; entonces sus atributos son el aspecto que refleja, tanto en color, tamaño, posición, si
está o no habilitado.

Ejemplo de objeto: un coche.

Se considera un coche un objeto, totalmente diferenciado del alquitrán donde está aparcado.
Sus atributos son su color, marca, modelo, número de matrícula, número de puertas,...
Sus eventos todos aquellas acciones por las cuales si el coche tuviera vida propia reconocería
que le estamos dando un uso, como abrir la puerta, girar el volante, embragar, abrir el capot,
....
Los métodos son todo aquello que nos ofrece el coche como hacer sonar una bocina cuando
tocamos el claxon (evento), llevarnos por la carretera, reducir la velocidad al pisar el freno
(evento), ...

4.6.5 Mensajes:

Aunque los objetos se han de diferenciar claramente en una aplicación, estos se han de poder
comunicar para poder trabajar en conjunto y construir así aplicaciones.
Esto se hace posible a través de lo que se denomina paso de mensajes. Cuando un objeto
quiere comunicarse con otro lo que hace es enviarle un mensaje con los datos que desea
transmitir.
En el símil del coche, al apretar el claxon, el objeto claxon envía un mensaje a la bocina
indicándole que haga sonar cierto sonido.
La potencia de este sistema radica en que el objeto emisor no necesita saber la forma en que
el objeto receptor va a realizar la acción. Simplemente este la ejecuta y el emisor se
desentiende del cómo; de hecho, ni le importa, solo tiene conocimiento de que se está
realizando.
Para que todo esto sea posible es necesario una buena programación de los eventos y de los
43

métodos de cada objeto.


El conjunto de mensajes a los que un objeto puede responder se denomina protocolo del
objeto.

4.6.6. Instancia:

Se llama instancia a todo objeto que derive de algún otro. De esta forma, todos los objetos
son instancias de algún otro, menos la clase Object que es la madre de todas.

Clases: Descripción de objeto. Consta de una serie de métodos y datos que resumen las
características de este objeto. Definir clases permite trabajar con código reutilizable. Puesto
que desde una clase se puede crear una instancia y así reutilizar el código escrito para esta si
tener que volver a escribir el código para la instancia. La instancia toma el patrón de la clase
padre. Sin embargo, las variables son independientes.

4.6.7. Métodos get y set

Los métodos get y set, son simples métodos que usamos en las clases para mostrar (get) o
modificar (set) el valor de un atributo. El nombre del método siempre será get o set y a
continuación el nombre del atributo, su modificador siempre es public ya que queremos
mostrar o modificar desde fuera la clase.

4.7. Modificador de acceso o visibilidad

Todos los tipos y miembros de tipo tienen un nivel de accesibilidad.

El nivel de accesibilidad controla si se pueden usar desde otro código del ensamblado u otros
ensamblados.

Use los modificadores de acceso siguientes para especificar la accesibilidad de un tipo o


miembro cuando lo declare:

public: Puede obtener acceso al tipo o miembro cualquier otro código del mismo ensamblado
o de otro ensamblado que haga referencia a éste.

private: solamente el código de la misma class o struct puede acceder al tipo o miembro.
44

protected: solamente el código de la misma class, o bien de una class derivada de esa class,
puede acceder al tipo o miembro.

internal: Puede obtener acceso al tipo o miembro cualquier código del mismo ensamblado,
pero no de un ensamblado distinto.

protected internal: cualquier código del ensamblado en el que se ha declarado, o desde una
class derivada de otro ensamblado, puede acceder al tipo o miembro.

private protected: el código de la misma class, o de un tipo derivado de esa class, puede
acceder al tipo o miembro solo dentro de su ensamblado de declaración.

4.8. Composición de poo

Es el mecanismo en el cual una clase se construye a partir de otros objetos de igual o distinto
tipo, pudiéndolos combinar para obtener la funcionalidad deseada. En la composición la
nueva clase, mantiene una relación “Usa/Tiene un” (Uses/Has a), con los objetos que son
parte de la clase.

Por ejemplo, si tomamos la computadora como una clase, veremos que está compuesta por
otros objetos, por lo que diríamos la clase computadora tiene un procesador, tiene un disco
duro, etc.

4.9. Vector de objetos

Java proporciona un grupo de clases que almacenan secuencias de objetos de cualquier tipo,
son las colecciones. Se diferencian en la forma de organizar los objetos y, en consecuencia, la
manera de recuperarlos. La clase Vector (paquete java.util) es una de estas colecciones, tiene
un comportamiento similar a un array unidimensional. Un Vector guarda objetos (referencias)
de cualquier tipo y crece dinámicamente, sin necesidad de tener que programar operaciones
adicionales. El array donde almacena los elementos es de tipo Object. Su declaración:
protected Object elementData[]
45

5. EL LENGUAJE UNIFICADO DE MODELADO UML

5-1 Historia del lenguaje UML

El lenguaje UML comenzó a gestarse en octubre de 1994, cuando Rumbaugh se unió a la


compañía Rational fundada por Booch (dos reputados investigadores en el área de metodología
del software).

El objetivo de ambos era unificar dos métodos que habían desarrollado: el método Booch y el
OMT (Object Modelling Tool ). El primer borrador apareció en octubre de 1995. En esa
misma época otro reputado investigador, Jacobson, se unió a Rational y se incluyeron ideas
suyas.
Estas tres personas son conocidas como los “tres amigos”. Además, este lenguaje se abrió a la
colaboración de otras empresas para que aportaran sus ideas. Todas estas colaboraciones
condujeron a la definición de la primera versión de UML.
De las tres metodologías de partida, las de Bco. y Rumbaugh pueden ser descritas como
centradas en objetos, ya que sus aproximaciones se enfocan hacia el modelado de los objetos
que componen el sistema, su relación y colaboración.
Por otro lado, la metodología de Jacobson es más centrada a usuario, ya que todo en su
método se deriva de los escenarios de uso. UML se ha ido fomentando y aceptando como
estándar desde el OMG, que es también el origen de CORBA, el estándar líder en la industria
para la programación de objetos distribuidos.

En 1997 UML 1.1 fue aprobada por la OMG convirtiéndose en la notación estándar de facto
para el análisis y el diseño orientado a objetos.
UML es el primer método en publicar un meta-modelo en su propia notación, incluyendo la
notación para la mayoría de la información de requisitos, análisis y diseño. Se trata pues de
un meta-modelo auto-referencial (cualquier lenguaje de modelado de propósito general
debería ser capaz de modelarse a sí mismo)
46

5.2. Que es UML

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.

Es comparable a los planos usados en otros campos y consiste en diferentes tipos de


diagramas. En general, los diagramas UML describen los límites, la estructura y el
comportamiento del sistema y los objetos que contiene.

UML no es un lenguaje de programación, pero existen herramientas que se pueden usar para
generar código en diversos lenguajes usando los diagramas UML. UML guarda una relación
directa con el análisis y el diseño orientados a objetos

UML y su función en el modelado y diseño orientados a objetos

Hay muchos paradigmas o modelos para la resolución de problemas en la informática, que es


el estudio de algoritmos y datos. Hay cuatro categorías de modelos para la resolución de
problemas: lenguajes imperativos, funcionales, declarativos y orientados a objetos (OOP). En
los lenguajes orientados a objetos, los algoritmos se expresan definiendo 'objetos' y haciendo
que los objetos interactúen entre sí. Esos objetos son cosas que deben ser manipuladas y
existen en el mundo real. Pueden ser edificios, artefactos sobre un escritorio o seres humanos.

Los lenguajes orientados a objetos dominan el mundo de la programación porque modelan


los objetos del mundo real. UML es una combinación de varias notaciones orientadas a
objetos: diseño orientado a objetos, técnica de modelado de objetos e ingeniería de software
orientada a objetos.

UML usa las fortalezas de estos tres enfoques para presentar una metodología más uniforme
que sea más sencilla de usar. UML representa buenas prácticas para la construcción y
documentación de diferentes aspectos del modelado de sistemas de software y de negocios.
47

La historia y los orígenes de UML

"The Three Amigos" (los tres amigos) de la ingeniería de software, como se los conocía,
habían desarrollado otras metodologías. Se asociaron para brindar claridad a los
programadores creando nuevos estándares. La colaboración entre Grady, Booch y Rumbaugh
fortaleció los tres métodos y mejoró el producto final.

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.

OMG: Tiene un significado diferente

Según su sitio web, el Object Management Group® (OMG®) es un consorcio internacional


sin fines de lucro y de membresía abierta para estándares tecnológicos, fundado en 1989. Los
estándares de OMG son promovidos por proveedores, usuarios finales, instituciones
académicas y agencias gubernamentales. Los grupos de trabajo de OMG desarrollan
estándares de integración empresarial para una amplia gama de tecnologías y una gama
incluso más amplia de industrias. Los estándares de modelado de OMG, incluidos UML y
Model Driven Architecture® (MDA®), permiten un eficaz diseño visual, ejecución y
mantenimiento de software y otros procesos.

OMG supervisa la definición y el mantenimiento de las especificaciones de UML. Esta


supervisión ofrece a los ingenieros y programadores la capacidad de usar un lenguaje para
48

muchos propósitos durante todas las etapas del ciclo de vida del software en sistemas de
cualquier tamaño.

La finalidad de UML según OMG

El OMG define los propósitos de UML de la siguiente manera:

Brindar a arquitectos de sistemas, ingenieros y desarrolladores de software las herramientas


para el análisis, el diseño y la implementación de sistemas basados en software, así como
para el modelado de procesos de negocios y similares.

Hacer progresar el estado de la industria permitiendo la interoperabilidad de herramientas de


modelado visual de objetos. No obstante, para habilitar un intercambio significativo de
información de modelos entre herramientas, se requiere de un acuerdo con respecto a la
semántica y notación.

UML cumple con los siguientes requerimientos:

Establecer una definición formal de un metamodelo común basado en el estándar MOF


(Meta-Object Facility) que especifique la sintaxis abstracta del UML. La sintaxis abstracta
define el conjunto de conceptos de modelado UML, sus atributos y sus relaciones, así como
las reglas de combinación de estos conceptos para construir modelos UML parciales o
completos.

Brindar una explicación detallada de la semántica de cada concepto de modelado UML. La


semántica define, de manera independiente a la tecnología, cómo los conceptos UML se
habrán de desarrollar por las computadoras.

Especificar los elementos de notación de lectura humana para representar los conceptos
individuales de modelado UML, así como las reglas para combinarlos en una variedad de
diferentes tipos de diagramas que corresponden a diferentes aspectos de los sistemas
modelados.
49

Definir formas que permitan hacer que las herramientas UML cumplan con esta
especificación. Esto se apoya (en una especificación independiente) con una especificación
basada en XML de formatos de intercambio de modelos correspondientes (XMI) que deben
ser concretados por herramientas compatibles.

UML y el modelado de datos

El UML es popular entre programadores, pero no suele ser usado por desarrolladores de
bases de datos. Una razón es sencillamente que los creadores de UML no se enfocaron en las
bases de datos. A pesar de ello, el UML es efectivo para el modelado de alto nivel de datos
conceptuales y se puede usar en diferentes tipos de diagramas UML. Puedes encontrar
información sobre la multidimensionalidad de un modelo de clases orientado a objetos en una
base de datos relacional en este artículo sobre Modelado de bases de datos en UML.

5.3. Características de UML:

El lenguaje de modelado es la notación (principalmente gráfica) que usan los métodos para
expresar un diseño. El proceso indica los pasos que se deben seguir para llegar a un
diseño.

Características de un UML :

visualizar.

Especificar

.Construir

.documentar y/o ser base de documentación

Lo fundamental de una herramienta UML:

La capacidad de diagramación, y los diferentes tipos de diagramas que soporta la


herramienta

Documentación
50

Construcción

Implantación de sistema

Flexibilidad para admitir cambios no previstos durante el diseño o el rediseño.

5.4. Tipos de diagramas en UML y su simbología

El UML está compuesto por diversos elementos gráficos que se combinan para conformar
diagramas. Debido a que el UML es un lenguaje, cuenta con reglas para combinar tales
elementos. La finalidad de los diagramas es presentar diversas perspectivas de un sistema, a
las cuales se les conoce como modelo. Recordemos que un modelo es una representación
simplificada de la realidad; el modelo UML describe lo que supuestamente hará un sistema,
pero no dice cómo implementar dicho sistema. A continuación, se describirán los diagramas
más comunes del UML y los conceptos que representan:

El Lenguaje Unificado de Modelado (UML, por sus siglas en inglés) puede ayudarte a
modelar sistemas de diversas formas. Uno de los tipos más populares en el UML es el
diagrama de clases. Popular entre los ingenieros de software para documentar arquitectura de
software, los diagramas de clases son un tipo de diagrama de estructura porque describen lo
que debe estar presente en el sistema que se está modelando. Sin importar tu nivel de
familiaridad con diagramas UML o diagramas de clases, nuestro software UML está diseñado
para ser simple y fácil de usar.
El UML se estableció como un modelo estandarizado para describir un enfoque de
programación orientada a objetos (POO). Como las clases son los componentes básicos de los
objetos, los diagramas de clases son los componentes básicos del UML. Los diversos
componentes en un diagrama de clases pueden representar las clases que se programarán en
realidad, los objetos principales o la interacción entre clases y objetos.

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.

La biblioteca de figuras UML en Lucidchart puede ayudarte a crear prácticamente cualquier


diagrama de clases por medio de nuestra herramienta de diagramas UML.
51

https://www.lucidchart.com/pages/es/tutorial-de-diagrama-de-clases-uml

Beneficios de los diagramas de clases

Los diagramas de clases ofrecen una serie de beneficios para toda organización. Usa los
diagramas de clases UML para:

• Ilustrar modelos de datos para sistemas de información, sin importar qué tan simples o
complejos sean.

• Comprender mejor la visión general de los esquemas de una aplicación.

• Expresar visualmente cualesquier necesidades específicas de un sistema y divulgar


esa información en toda la empresa.
52

• Crear diagramas detallados que resalten cualquier código específico que será
necesario programar e implementar en la estructura descrita.

• Ofrecer una descripción independiente de la implementación sobre los tipos


empleados en un sistema que son posteriormente transferidos entre sus
componentes.

Crear diagramas es rápido y sencillo con Lucidchart. Inicia una prueba gratuita hoy mismo
para empezar a crear y colaborar.

Crea un diagrama UML

https://www.lucidchart.com/pages/es/tutorial-de-diagrama-de-clases-uml
Componentes básicos de un diagrama de clases

El diagrama de clases estándar está compuesto por tres partes:

• Sección superior: Contiene el nombre de la clase. Esta sección siempre es necesaria,


ya sea que estés hablando del clasificador o de un objeto.
• Sección central: Contiene los atributos de la clase. Usa esta sección para describir
cualidades de la clase. Esto solo es necesario al describir una instancia específica de
una clase.
• Sección inferior: Incluye operaciones de clases (métodos). Esto está organizado en
un formato de lista. Cada operación requiere su propia línea. Las operaciones
describen cómo una clase puede interactuar con los datos.

Modificadores de acceso a miembros

Todas las clases poseen diferentes niveles de acceso en función del modificador de acceso
(visibilidad). A continuación te mostramos los niveles de acceso con sus símbolos
correspondientes:

• Público (+)

• Privado (-)
53

• Protegido (#)

• Paquete (~)

• Derivado (/)

• Estático (subrayado)

Alcance de los miembros

Hay dos alcances para los miembros: clasificadores e instancias.

Los clasificadores son miembros estáticos, mientras que las instancias son las instancias
específicas de la clase. Si estás familiarizado con POO, esto no es nada nuevo.

Componentes adicionales del diagrama de clases

En función del contexto, las clases de un diagrama de clases pueden representar los objetos
principales, las interacciones en la aplicación o las clases que se programarán. Para responder
la pregunta "¿Qué es un diagrama de clases en UML?" , primero deberías comprender su
composición básica.

• Clases: Una plantilla para crear objetos e implementar un comportamiento en un


sistema. En UML, una clase representa un objeto o un conjunto de objetos que
comparte una estructura y un comportamiento comunes. Se representan con un
rectángulo que incluye filas del nombre de la clase, sus atributos y sus operaciones.
Al dibujar una clase en un diagrama de clases, solo se debe cumplimentar la fila
superior. Las otras son opcionales y se usan si deseas agregar más detalles.
o Nombre: La primera fila en una figura de clase.
o Atributos: La segunda fila en una figura de clase. Cada atributo de una
clase está ubicado en una línea separada.
o Métodos: La tercera fila en una figura de clase. También conocidos
como "operaciones", los métodos se organizan en un formato de lista
donde cada operación posee su propia línea.
• Señales: Símbolos que representan comunicaciones unidireccionales y asincrónicas
entre objetos activos.
54

• Tipos de datosClasificadores que definen valores de datos. Los tipos de datos pueden
modelar tanto enumeraciones como tipos primitivos.
• Paquetes: Figuras diseñadas para organizar clasificadores relacionados en un
diagrama. Se simbolizan con una figura de un gran rectángulo con pestañas.
• Interfaces: Una recopilación de firmas de operaciones o de definiciones de atributo
que define un conjunto uniforme de comportamientos. Las interfaces son similares
a una clase, excepto por que una clase puede tener una instancia de su tipo, y una
interfaz debe poseer, como mínimo, una clase para implementarla.
• Enumeraciones: Representaciones de tipos de datos definidos por el usuario. Una
enumeración incluye grupos de identificadores que representan valores de la
enumeración.
• Objetos: Instancias de una clase o clases. Los objetos se pueden agregar a un
diagrama de clases para representar instancias prototípicas o concretas.
• Artefactos: Elementos modelo que representan las entidades concretas de un sistema
de software, como documentos, bases de datos, archivos ejecutables, componentes
de software y más.

Interacciones

El término "interacciones" se refiere a múltiples relaciones y enlaces que pueden existir en


diagramas de objetos y de clases. Algunas de las interacciones más comunes incluyen:

• Herencia: El proceso en el que una subclase o clase derivada recibe la funcionalidad


de una superclase o clase principal, también se conoce como "generalización". Se
simboliza mediante una línea de conexión recta con una punta de flecha cerrada
que señala a la superclase.
55

https://www.lucidchart.com/pages/es/tutorial-de-diagrama-de-clases-uml
En este ejemplo, el objeto "Auto" heredaría todos los atributos (velocidad, números de
pasajeros, combustible) y los métodos (arrancar(), frenar(), cambiarDirección()) de la clase
principal ("Vehículo"), además de los atributos específicos (tipo de modelo, número de
puertas, fabricante del auto) y métodos de su propia clase (Radio(), limpiaparabrisas(),
aireacondicionado/calefacción()). La herencia se muestra en un diagrama de clases por medio
de una línea continua con una flecha cerrada y vacía.

• Asociación bidireccional: La relación predeterminada entre dos clases. Ambas clases


están conscientes una de la otra y de la relación que tienen entre sí. Esta asociación
se representa mediante una línea recta entre dos clases.

https://www.lucidchart.com/pages/es/tutorial-de-diagrama-de-clases-uml
En el ejemplo anterior, la clase Auto y la clase Viaje están interrelacionadas. En un extremo
de la línea, el Auto recibe la asociación de "autoAsignado" con el valor de multiplicidad de
0..1, de modo que cuando la instancia de Viaje existe, puede tener una instancia de Auto
asociada a ella o no tener instancias de Autos asociadas a ella. En este caso, una clase
CasaRodante separada con un valor de multiplicidad de 0..* es necesaria para demostrar que
56

un Viaje puede tener múltiples instancias de Autos asociadas a ella. Dado que una instancia
de Auto podría tener múltiples asociaciones "iniciarViaje", en otras palabras, un auto podría
realizar múltiples viajes, el valor de multiplicidad se establece en 0..*

• Asociación unidireccional: Una relación un poco menos común entre dos


clases. Una clase está consciente de la otra e interactúa con ella. La asociación
unidireccional se dibuja con una línea de conexión recta que señala una punta de
flecha abierta desde la clase "knowing" a la clase "known".

https://www.lucidchart.com/pages/es/tutorial-de-diagrama-de-clases-uml
Como ejemplo, en tu viaje por Arizona, podrías encontrarte con una trampa de velocidad
donde un radar de tráfico registra la velocidad a la que conducías, pero no lo sabrás hasta que
recibas la notificación por correo. Esto no está dibujado en la imagen, pero en este caso, el
valor de multiplicidad sería 0..* en función de cuántas veces hayas conducido frente al radar
de tráfico.

Ejemplos de diagrama de clases

Crear un diagrama de clases para trazar flujos de procesos es sencillo. Considera los dos
ejemplos siguientes al crear tus propios diagramas de clases en UML.

Diagrama de clases para un sistema administrativo hotelero

Un diagrama de clases puede mostrar las relaciones entre cada objeto en un sistema
administrativo hotelero, incluidas la información de huéspedes, las responsabilidades del
personal y la ocupación por habitación. El siguiente ejemplo proporciona un panorama útil
del sistema administrativo hotelero. Inicia un diagrama de clases haciendo clic en la plantilla
siguiente.
57

https://www.lucidchart.com/pages/es/tutorial-de-diagrama-de-clases-uml

Diagrama de clases para un sistema de cajero automático ATM

Los ATM son aparentemente simples. Aunque los clientes solo necesitan oprimir algunos
botones para recibir efectivo, hay muchas capas de seguridad que un ATM seguro y efectivo
debe pasar para evitar fraude y brindar valor a los clientes bancarios. Las diversas partes
humanas e inanimadas de un sistema de ATM son ilustradas por este diagrama sencillo de
leer. Cada clase tiene su título y los atributos se detallan debajo. Puedes editar, guardar y
compartir este diagrama abriendo el documento y registrándote a una cuenta gratuita de
Lucidchart.
58

https://www.lucidchart.com/pages/es/tutorial-de-diagrama-de-clases-uml

Cómo dibujar un diagrama de clases

En Lucidchart, crear un diagrama de clases desde cero es sorprendentemente simple. Solo


sigue estos pasos:

1. Abre un documento en blanco o empieza con una plantilla.

2. Activa la biblioteca de figuras UML. En el lado izquierdo del editor de Lucidchart,


haz clic en "Figuras". Una vez que estés en el Administrador de bibliotecas de
figuras, marca "UML" y haz clic en "Guardar".
59

3. Desde las bibliotecas que recién agregaste, selecciona la figura que quieras y
arrástrala de la caja de herramientas al lienzo.

4. Modela el flujo de procesos trazando líneas entre las figuras mientras agregas
texto.

Analiza en detalle esta guía sobre cómo dibujar un diagrama de clases en UML para obtener
una perspectiva adicional. En Lucidchart, es sencillo modificar el tamaño y el estilo de
cualquier elemento. Puedes incluso importar figuras SVG y archivos Visio para tener una
solución personalizada. Si quieres saber más sobre UML, echa un vistazo a nuestro tutorial,
"¿Qué es UML?"

5.5 Diagrama de Clases

Los diagramas de clases describen la estructura estática de un sistema. Las cosas que existen
y que nos rodean se agrupan naturalmente en categorías. Una clase es una categoría o grupo
de cosas que tienen atributos (propiedades) y acciones similares. Un ejemplo puede ser la
clase “Aviones” que tiene atributos como el “modelo de avión”, “la cantidad de motores”, “la
velocidad de crucero” y “la capacidad de carga útil”. Entre las acciones de las cosas de esta
clase se encuentran: “acelerar”, “elevarse”, “girar”, “descender”, “desacelerar”. Un
rectángulo es el símbolo que representa a la clase, y se divide en tres áreas. Un diagrama de
clases está formado por varios rectángulos de este tipo conectados por líneas que representan
las asociaciones o maneras en que las clases se relacionan entre sí.

https://www.docirs.cl/uml.htm
60

https://www.docirs.cl/uml.htm

https://www.docirs.cl/uml.htm

5.6. Diagrama de Casos de Uso

Un caso de uso es una descripción de las acciones de un sistema desde el punto de vista del
usuario. Es una herramienta valiosa dado que es una técnica de aciertos y errores para obtener
los requerimientos del sistema, justamente desde el punto de vista del usuario. Los diagramas
de caso de uso modelan la funcionalidad del sistema usando actores y casos de uso. Los casos
de uso son servicios o funciones provistas por el sistema para sus usuarios.
61

https://www.docirs.cl/uml.htm

5.6.1. Actor

• Un caso de uso es una técnica de modelado usada para describir lo que debería hacer
un sistema nuevo o lo que hace un sistema que ya existe. – Los casos de uso describen bajo la
forma de acciones y reacciones el comportamiento de un sistema desde el punto de vista de
un usuario, permiten definir los límites del sistema y las relaciones entre el sistema y el
entorno. • Los componentes primarios de un modelo de casos de uso (case-use model) son los
casos de uso (use cases), los actores y el sistema modelado. • Los casos de uso son
descripciones funcionales del sistema; describen cómo los actores pueden usar un sistema. –
Los límites del sistema se definen por
62

Lightbot

https://www.fundacionluminis.org.ar/recurso-didactico-online/lightbot-videojuego-

habilidades-logica-programacion

Recursos de software para desarrollo

https://edukativos.com/apuntes/archives/10555

Devc++

https://www.embarcadero.com/es/free-tools/dev-cpp

Diagrams.net

https://conocimientolibre.mx/que-es-diagrams-net/

Netbeans

https://sites.google.com/site/portafolionetbeans/que-es-netbeans

JRE

http://wiki.uqbar.org/wiki/articles/jdkVsJre.html

JRD

http://wiki.uqbar.org/wiki/articles/jdkVsJre.html

Palabras reservadas c++

http://c.conclase.net/curso/?cap=901

Vectores

https://es.wikibooks.org/wiki/Programación_en_C/Vectores

Torres de hanoi

https://runestone.academy/runestone/static/pythoned/Recursion/LasTorresDeHanoi.html

Matrices

https://www.programarya.com/Cursos/C++/Estructuras-de-Datos/Matrices
63

Historia del lenguaje java

http://www.manualweb.net/java/historia-

java/#:~:text=El%20lenguaje%20Java%20fue%20desarrollado,Java%2C%20corría%20el%2

0año%201996.

Máquina virtual

https://www.campusmvp.es/recursos/post/que-es-la-maquina-virtual-de-java-o-java-virtual-

machine.aspx

API de java

http://www.abelp.net/apuntesjava/22.api.html

Tipos de datos, variables y arreglos

https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=41

9:tipos-de-datos-java-tipos-primitivos-int-boolean-y-objeto-string-array-o-arreglo-variables-

cu00621b&catid=68&Itemid=188

Declaración de variables java

http://www.manualweb.net/java/variables-java/

Estructuras de Control

https://aprendiendoarduino.wordpress.com/2017/10/14/estructuras-de-control-4/

Palabreas Reservadas

https://www.ciberaula.com/cursos/java/palabras_reservadas_java.php

Operadores en java

https://www.arkaitzgarro.com/java/capitulo-4.html

Operadores relacionados

https://www.arkaitzgarro.com/java/capitulo-4.html

Operadores aritméticos

https://www.arkaitzgarro.com/java/capitulo-4.html
64

Operadores Lógicos

https://sites.google.com/site/unidad1hebervanegasuribe/unidad-3/java---operadores-y-tipos-

de-datos

Operadores de asignación

https://www.arkaitzgarro.com/java/capitulo-4.html

Operador ternario especial ‘?’

http://lineadecodigo.com/java/el-operador-ternario-en-java/

Historia de la programación orientada a objetos

http://sis324loo.blogspot.com/2008/09/historia-de-los-lenguajes-

de_29.html#:~:text=La%20Programación%20Orientación%20a%20Objetos,el%20centro%20

de%20cálculo%20noruego.&text=El%20nacimiento%20de%20la%20Programación,gran%2

0parte%20de%20los%20programadores.

Que es la poo

https://desarrolloweb.com/articulos/499.php

Ventajas de poo

https://www.ciberaula.com/cursos/java/ventajas_poo.php

Principios y característica de poo

https://sites.google.com/site/javaprogramacion1/contenidos/unidad-1-

introduccion/caractersticas-de-poo

Abstracción

https://sites.google.com/site/javaprogramacion1/contenidos/unidad-1-

introduccion/caractersticas-de-poo

Encapsulamiento

https://sites.google.com/site/javaprogramacion1/contenidos/unidad-1-

introduccion/caractersticas-de-poo
65

Modularidad

https://styde.net/modularidad-en-la-programacion-orientada-a-objetos/

Herencia

https://es.ccm.net/contents/411-poo-herencia

Poliformlismo

https://desarrolloweb.com/articulos/polimorfismo-programacion-orientada-objetos-

concepto.html

Ejemplos

Propia autoría

Elementos de POO

https://www.evirtualcisneros.xyz/mooc/17-programacion/27-elementos-basicos-de-la-

programacion-orientada-a-objetos

Clase

http://www.upv.es/amiga/43.htm

Objeto

http://www.upv.es/amiga/43.htm

Atributos

http://www.upv.es/amiga/43.htm

Métodos

http://www.upv.es/amiga/43.htm

Constructor

http://www.upv.es/amiga/43.htm

Sobrecarga de constructores

http://www.upv.es/amiga/43.htm

Métodos get y set

http://www.upv.es/amiga/43.htm

Modificador de acceso o visibilidad


66

https://docs.microsoft.com/es-es/dotnet/csharp/programming-guide/classes-and-

structs/access-modifiers

Composición de poo

https://www.javanicaragua.org/2019/11/24/composicion-sobre-la-

herencia/#:~:text=Composición%20en%20POO.,son%20parte%20de%20la%20clase.

Vector de objetos

https://sites.google.com/a/espe.edu.ec/programacion-ii/home/a1-arreglos/declaracion-

manipulacion-y-asignacion-de-vectores/la-clase-vector

Historia del lenguaje UML

http://sistemasiii3.blogspot.com/2011/03/breve-resumen-de-la-historia-del-

uml.html#:~:text=El%20lenguaje%20UML%20comenzó%20a,OMT%20(Object%20Modelli

ng%20Tool%20).

Que es UML

https://www.lucidchart.com/pages/es/que-es-el-lenguaje-unificado-de-modelado-uml

Características de uml

https://sites.google.com/site/disenodesistemasdmlf/home/-que-es-uml-y-sus-caracteristicas

Tipos de diagramas en UML y su simbología

https://www.teatroabadia.com/es/uploads/documentos/iagramas_del_uml.pdf

Diagramas de clase

https://www.teatroabadia.com/es/uploads/documentos/iagramas_del_uml.pdf

Diagramas de caso de uso

https://www.teatroabadia.com/es/uploads/documentos/iagramas_del_uml.pdf

Actor

https://www.ctr.unican.es/asignaturas/MC_OO/Doc/Casos_de_uso.pdf
67

Conclusiones

1. INTRODUCCIÓN A LA PROGRAMACIÓN

1.1. Juego Ligthbot

El juego ligthbot recrea los principios básicos de la programación poniendo a prueba a el


participante con su nivel de racionamiento lógico para poder resolver uno a uno los niveles de
este.

1.2. Recursos de software para desarrollo

Al tener las herramientas de creación como lo son el software y el hardware tenemos la


pirámide para poder tener los componentes para un óptimo mantenimiento

1.2.1. Devc++

La herramienta de programación o el lenguaje de programación c++ ha sido renovada año


tras año para un mejor uso de esta. Permite crear programas en un óptimo desarrollo y fácil
creación. Ya que ha ido evolucionando tomando como fuente otros compiladores

1.2.2. Diagrams.net

Es una página web que nos ayuda en la creación de diagramas ya sean tipo UML,
organigramas o demás diagramas web.

Tiene varias modelos de creación como también la implementación de imágenes tipografía y


demás herramientas para facilitar al usuario la creación de estas

1.2.3. NetBeans
68

Es uno de los mejores compiladores actualmente utilizado para la creación ya sea de


programaciones básicas como programaciones mucho más complejas esta también
evolucionando gracias a diferente compiladores web y a sus masivas actualizaciones que han
logrado tener a este como uno de los mejores compiladores para trabajos tanto como
escolares como laborales

1.2.4. Java JRE

Es básicamente una librería que nos permite implementar una variedad de herramientas para
la facilitación del usuario en cuestión

1.2.5. Java JDK

Se basa en ser casi como JRE una biblioteca que ayuda al usuario a crear programación de
una manera más fácil y dinámica

2. LENGUAJE C++

2.1. Palabras reservadas de C++

Las palabras reservadas son básicamente el código de programación en si ya que cada una de
estas diseñan el código lo completan y hace que tenga un óptimo funcionamiento

2.2. Vectores

La utilidad de un vector es poder ingresar una serie de variables dependiendo de cómo se


haya declarado la variable tomando como principio la posición 0 hasta la última posición
digitada

2.3. Torres de Hanoi


69

Se basa en un puzle de alta de dificultad en el que empezaras a utilizar tu agilidad mental para
poder terminarlo ya que debido a su nivel de complejidad tendrás que llevar a cabo tus arduos
conocimientos de programación para lograr de un origen cambiar todas sus fichas al destino
final en el orden requerido sin ningún fallo

2.4. Matrices

Son básicamente vectores unidireccionales al tener como base dos vectores que sean su forma
vertical y horizontal dando como resultado una matriz del tamaño que el usuario diseñe
pidiendo implementar cualquier tipo de dato dependiendo del modelo que sea haya usado

3. LENGUAJE JAVA

3.1. Historia y evolución

Podemos darnos de cuenta como el lenguaje javo ha pasado por tantas modificaciones para
que cada vez se un compilador que cumpla con las necesidades del usuario tomado como
base diferentes modelos de compiladores de todo el mundo ya sea lanzando actualizaciones
que arreglen fallo que podrían arruinar al compilador como a mejorar de este mismo

3.2. Máquina virtual de Java

Es el sistema operativo de un compilador de alto nivel conocido así debido a su alta


complementación de herramientas ya sean bucles, condicionales, matrices, tipos de datos...
Lo que convierte a la máquina virtual de java en una de las mejores del mercado actual

3.3. API de java

La API actual de Java goza con una amplia variedad teniendo más de 2000 elementos entre
clases, interfaces, excepciones, etc. Lo que hace que el funcionamiento de esta no sea nada
fácil y solo se pueda recrear por expertos programadores, al ser un paquete tan abierto logra
70

que el programador goza muchas herramientas a la mano para disfrutar de una amplia
facilidad

3.4. Tipos de datos, variables y arreglos

Una variable se asigna el tipo de variable que se le asigne ya sea de tipo entero flotante etc.

En estos se pueden utilizar para distintos modelos ya sean programas matemáticos problemas
de listos de palabras o demás usos de este

3.4.1. Declaración de variables java

Al declarar una variable en java no es necesario inicializarla en 0 ya que java tiene la función
de que si no es declarada por el usuario el compilador automáticamente la inicializa en 0

3.5. Estructuras de Control

Las estructuras permiten manejar el flujo de control del programa ya sea a través del uso de
while, do while o for que permite el buen uso de programas matemáticos simples

3.6. Palabreas Reservadas

Las palabras reservadas cumplen su fusión como base del dato a crear o programa en si ya
que estas otorgan la información para que el programa tenga un óptimo funcionamiento ya
que sin estas no se podría prácticamente crear ningún programa por muy simple que sea

3.7. Operadores en java

Los operadores básicos de java se subdividen en diferentes categorías que estas a su vez
tienen bastante herramienta estas logran que el programa tenga lógica y pueda funcionar
correctamente
71

3.7.1. Operadores relacionales

Estos ayudan a la implementación de enunciados ya se de origen matemático o lógico


atreves de variables básicas como lo son el menor que o el igual o no igual

3.7.2. Operadores aritméticos

Esta categoría se base sola mente en operadores matemáticos un poco avanzados para que
el trabajo no sea tan largo y se pueda reducir el código del programa

3.7.3. Operadores Lógicos

Estos se basan la lógica programadora en el tener un ideal de cómo hacer que algo ósea igual
a una variable o distinta a esta el tener el y en una operación o el o y por último el no

3.7.4. Operadores de asignación

Otorgan una igual a una variable gracias a esta puedes igualar variables diferentes
dependiendo de lo que se requiera hacer

3.7.5. Operador ternario especial ‘?’

Pocos conocen del uso de este raro operador especial que logra reducir el código en gran
manera de cual que numero es menor si tener que utilizar un if con else

4. PROGRAMACIÓN ORIENTADA A OBJETOS

4.1. Historia.
72

La historia evolutiva de una forma de ampliación de la purgación de compiladores básicos a


través de un modelo diferente al común el programar, pero basándose como tal en un objeto
real y como la historia de esta a cerrado el buen funcionamiento de esta y una mejor
implementación

4.2. Que es la POO

La programación orientada a objetos o también conocida por sus siglas Poo se basa en un
modelo de creación de ejercicios como base el objeto como tal y a partir de este crear al
objeto como tal el cual tendrá todo lo que tendría un objeto real y tangible

4.3. Ventajas

El programar orientándose o basándose en un objeto como tal facilita al usuario a recrear el


programa de la mejor manera sin fallos debido a que al basarse en un objeto tangible no
tendrá errores básicos, sino que gozará de un mejor funcionamiento

4.4. Principios y característica

El principio como tal es el basarse en un objeto como tal que a la vez interactúa con demás
aspectos y se organiza entre si

4.4.1. Abstracción

En este aspecto tomamos en cuenta el cómo es el objeto como interactúa con el entorno su
funcionamiento y modelo a seguir
73

4.4.2. Encapsulación

Este aspecto ayuda al programador a tomar los detalles que necesita el código y dejar de lado
aquellas funciones que solo llenarían el código y dificultarían su funcionamiento

4.4.3. Ocultación

Esta función permite dividir al programa en módulos para que el código se pueda compilar
por partes y así poder mirar en que parte este el fallo y no dañar todo el código como tal

4.4.4. Modularidad

Con esta función podemos crear distintas variables heredadas de una principal con lo seria
dos variables perro y gato que a su vez serian heredadas de una función animal

4.4.5. Herencia

Esta función es únicamente de la Poo ya que utilizamos variables ya creadas para así
retomarlas y no hacer que el código se vuelta muy repetitivo, sino que solo tendrás que acudir
a esta función

4.4.6. Polimorfismo

Esta función le da su forma al objeto como tal en el que se crea toda su estructura su
movilidad su esqueleto interno como ejemplo un carro el cual tiene 4 ruedas, muchos espejos
como laterales como frontales, su caja de cambio su volante etc.

4.5. Ejemplos
74

Estos ejemplos realizados en clase no ayudan a comprender el que es programar como ya lo


conocemos, pero ahora basándose en un objeto tangible y su implementación tanto como en
la lógica como en el compilador, ya que son varios ejemplos estos mejoran aún más nuestro
conocimiento sobre NetBeans ya que poco lo hemos utilizado

4.6. Elementos de POO

La Poo se basa básicamente en el manejo de distintas clases organizadas de un programa que


estos a su vez tienen atributos como clases objetos atributos y métodos que se subdividen en
varias herramientas

4.6.1. Clase

Esta función permite separar los componentes el ejercicio y ayudando en su depuración como
en futuras mejoras el programa

4.6.2. Objeto

Esta función responde al objeto cuando se le ingresa un mensaje y le efectúa el tipo de


servicio durante el trascurso de este

4.6.3. Atributos

Esta herramienta se acciona cuando reconoce que se está interactuando con el objeto del
programa
75

4.6.4. Métodos

Esta función es mas de soporte al usuario para dejar comentarios internos en el código para
que así pueda tener una guía interna del funcionamiento del objeto a recrear y así no tenga
fallo alguno

4.6.5. Constructor

Esta función deriva de otro objeto como tal mejorando el desarrollo del programa a ejecutar y
a desarrollar esto a través de métodos y datos para el resumen de características de código

4.6.6. Sobrecarga de constructores

Esta función responde al objeto cuando se le ingresa un mensaje y le efectúa el tipo de


servicio durante el trascurso de este

4.6.7. Métodos jet y set

Con esta función podremos tener datos públicos como privados que ayudaran a la hora de
mostrar el programa mostrando solo los datos públicos y restringiendo la visualización de los
privados

4.7. Modificador de acceso o visibilidad

Para que sirve esta imprenta acciones y herramientas que benefician la visualización ya sea
de variables clases o demás implementaciones del código de una mera tangible y sencilla de
entender
76

4.8. Composición

Es un mecanismo en el cual se construye el código a partir de (uses/has a) con el cual


construye otros objetos a partir del mismo o de diferentes objetos pudiendo cambiar objetos
para reutilizar código ya digitado

4.9. Vector de objetos

Es el modelo de organización de objetos en secuencias, paquetes que encapsularan


información dependiendo de cómo se haya inicializado este por celdas la cual cada posición
se recorrerá iniciando desde la posición 0

5. EL LENGUAJE UNIFICADO DE MODELADO UML

5-1 El lenguaje UML empezó a desarrollarse en octubre del 1994, cuando Rumbaugh se
unió a la compañía Rational de Booch. Su objetivo era unificar el método de Booch y el
OMT. En octubre de 1995 apareció el primer borrador y en ese tiempo Jacobson otro
investigador, se unió a Rational y unieron ideas. Ellos son conocidos como los “tres
amigos”. También este lenguaje se abrió a la colaboración de otras empresas para dar sus
ideas y estas condujeron a la definición de la UML

5-2 El UML se creó para forjar un lenguaje de modelado visual común, semántico y
sintáctico para la arquitectura, el diseño y la implementación de sistemas de software
complejos. Sus diagramas describen los límites, estructura y comportamiento del sistema y
objetos. UML no es un lenguaje de programación y si guarda una relación con el análisis y
diseño orientados a objetos.

5-3 El lenguaje de modelado es la notación que usan los métodos para expresar un diseño.
Se caracteriza por visualizar, especificar, construir, documentar y ser base de
documentación. Es fundamental la capacidad de diagramación y los diferentes tipos de
diagramas, documentación, construcción, implantación de sistema y flexibilidad.
77

5-4 El UML está compuesto por diversos elementos gráficos que se combinan para
conformar diagramas por es un lenguaje y tiene reglas. Los diagramas pretenden presentar
diferentes perspectivas de un sistema, conocidas como modelo que describe lo que hará un
sistema.

5-5 Los diagramas de clases describen la estructura estática de un sistema. Las cosas
existentes y que nos rodean se agrupan en categorías. Una clase es una categoría que tiene
propiedades y acciones similares.

5-6 Un uso de caso es una descripción de las acciones de un sistema desde el p unto de
vista del usuario; es una gran herramienta ya que es una técnica de aciertos y errores para
obtener los requerimientos del sistema por el usuario. Los diagramas de caso de uso
modelan la funcionalidad del sistema usando actores y casos de uso donde estos casos son
servicios del sistema para sus usuarios.

5.6.1. Actor

Es una técnica de modelado para que un sistema nuevo se pueda adaptar a un sistema viejo o
antiguo

Вам также может понравиться