Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 19

evaluación de presaberes

Hector luis zambrano paz

Juan camilo ocampo loboa

programación III

Institución Universitaria Antonio José Camacho

facultad de ingenierías

Ingeniería de Sistemas

Cali, Colombia

15 de febrero 2024
EVALUACIÓN DE PRESABERES DE PROGRAMACIÓN lll

solución

1.a) ¿Qué diferencia hay entre clase, objeto e instancia?

Clase:En mis palabras es la plantilla donde creamos objetos de datos, es


como un molde donde definimos características.
Objeto:Es una instancia de clase donde almacenamos datos .
Instancia:Es la creación de un objeto a partir de una clase.

b)Explique lo que significa ámbito de una variable y los que significa variable
local y
variable global en programación (lo busque en chat gpt)

En programación, el "ámbito de una variable" se refiere al contexto o alcance


en el cual una variable puede ser utilizada o accedida. Hay dos conceptos
clave relacionados con el ámbito de las variables: variables locales y variables
globales.

Variable Local:

Una variable local es aquella que se declara dentro de una función o bloque de
código específico y solo es accesible dentro de ese ámbito local.
Estas variables son temporales y solo existen mientras la función o bloque de
código está en ejecución.
Las variables locales son útiles para limitar la visibilidad y evitar conflictos de
nombres en diferentes partes del código.

Variable Global:

Una variable global es aquella que se declara fuera de cualquier función o


bloque de código y puede ser accedida desde cualquier lugar del programa.
Tienen un ámbito más amplio y existen durante toda la ejecución del
programa.
Aunque las variables globales pueden ser convenientes, se debe tener
cuidado con su uso para evitar posibles efectos secundarios y dificultades en
el mantenimiento del código.

Es importante entender y gestionar adecuadamente el ámbito de las variables


para evitar problemas como colisiones de nombres, pérdida de datos y
facilitar el mantenimiento del código. En general, se recomienda utilizar
variables locales siempre que sea posible y limitar el uso de variables
globales a casos necesarios.

c) Dé dos ejemplos de objetos tangibles y dos intangibles. Haga el


diagrama de clase de
cada objeto. (lo busque en chat gpt no lo tenía muy claro)

Los objetos se definen mediante clases. A continuación, proporcionaré


ejemplos de dos objetos tangibles y dos intangibles, junto con un esbozo
simple del diagrama de clase para cada uno.

Ejemplo de Objeto Tangible 1: Coche

public class Coche {


// Atributos
String marca;
String modelo;
int añoFabricacion;

// Métodos
public void acelerar() {
// Lógica para acelerar el coche
}

public void frenar() {


// Lógica para frenar el coche
}
}
Diagrama de Clase para el Coche:
+---------------------+
| Coche |
+---------------------+
| - marca: String |
| - modelo: String |
| - añoFabricacion: int|
+---------------------+
| + acelerar(): void |
| + frenar(): void |
+---------------------+

Ejemplo de Objeto Tangible 2: Libro

public class Libro {


// Atributos
String titulo;
String autor;
int añoPublicacion;

// Métodos
public void abrir() {
// Lógica para abrir el libro
}

public void cerrar() {


// Lógica para cerrar el libro
}
}
Diagrama de Clase para el Libro:

+---------------------+
| Libro |
+---------------------+
| - titulo: String |
| - autor: String |
| - añoPublicacion: int|
+---------------------+
| + abrir(): void |
| + cerrar(): void |
+---------------------+

Ejemplo de Objeto Intangible 1: Cuenta Bancaria

public class CuentaBancaria {


// Atributos
String numeroCuenta;
String titular;
double saldo;

// Métodos
public void depositar(double cantidad) {
// Lógica para realizar un depósito
}

public void retirar(double cantidad) {


// Lógica para realizar un retiro
}
}
Diagrama de Clase para la Cuenta Bancaria:

+------------------------+
| CuentaBancaria |
+------------------------+
| - numeroCuenta: String |
| - titular: String |
| - saldo: double |
+------------------------+
| + depositar(cantidad: double): void |
| + retirar(cantidad: double): void |
+------------------------+
Ejemplo de Objeto Intangible 2: Correo Electrónico

public class CorreoElectronico {


// Atributos
String remitente;
String destinatario;
String asunto;
String contenido;

// Métodos
public void enviar() {
// Lógica para enviar el correo electrónico
}

public void recibir() {


// Lógica para recibir el correo electrónico
}
}

Diagrama de Clase para el Correo Electrónico:

+------------------------+
| CorreoElectronico |
+------------------------+
| - remitente: String |
| - destinatario: String |
| - asunto: String |
| - contenido: String |
+------------------------+
| + enviar(): void |
| + recibir(): void |
+------------------------+
Estos son ejemplos simples de clases y objetos en Java, tanto para objetos
tangibles como intangibles. Cada clase representa un tipo de objeto y define
sus atributos y métodos asociados.
d. ¿Para qué sirve un constructor? ¿Cuál es la utilidad de un
constructor que no tiene
parámetros?

Un constructor sirve para ejecutar por medio de un método de manera


automática al instanciar un objeto de una clase. También sirve para asignar
valores iniciales a los atributos de la instancia cuando se crea un objeto.

(esta parte lo hice con chat gpt) Utilidad de un Constructor sin Parámetros:(
busque esta parte en chat gpt)
Inicialización por Defecto:
Un constructor sin parámetros proporciona una forma de inicializar un objeto
con valores predeterminados cuando no se especifican argumentos al crear
una instancia de la clase.
Esto es útil cuando se desea que los objetos tengan valores iniciales
específicos, pero se permiten instancias sin proporcionar información
adicional.
Configuración Gradual:
Permite la creación de objetos sin proporcionar todos los detalles necesarios
de inmediato. En algunos casos, puede ser útil crear un objeto y luego
configurar sus propiedades de manera gradual utilizando métodos específicos
después de la creación.
En resumen, un constructor sin parámetros en Java es útil para proporcionar
valores iniciales predeterminados o permitir la configuración gradual de
objetos sin la necesidad de especificar todos los detalles en el momento de la
creación.

e. ¿Qué es un IDE? Nombre algunos IDE para Java.(lo busque en chat gpt)

Un IDE (Entorno de Desarrollo Integrado, por sus siglas en inglés) es una


herramienta que proporciona un conjunto completo de características para el
desarrollo de software en un solo entorno. Estas características suelen incluir
un editor de código, herramientas de depuración, compilación, gestión de
proyectos y a menudo integración con sistemas de control de versiones. Los
IDE facilitan el desarrollo y la productividad del programador al ofrecer un
conjunto coherente de herramientas en un solo lugar.

Para Java, hay varios IDEs populares que son ampliamente utilizados por
desarrolladores. Algunos de los IDEs más conocidos para Java son:

Eclipse:

Eclipse es un IDE de código abierto y gratuito que es muy versátil y extensible.


Es ampliamente utilizado en la comunidad Java y admite la creación de
proyectos Java, así como el desarrollo de aplicaciones web, empresariales y
móviles.
IntelliJ IDEA:

IntelliJ IDEA es un IDE desarrollado por JetBrains y es conocido por su


potente capacidad de análisis estático, refactorización inteligente y
sugerencias de código. Tiene una versión gratuita llamada Community Edition
y una versión Ultimate con características adicionales.
NetBeans:

NetBeans es otro IDE de código abierto y gratuito que ofrece soporte para
Java, así como para otros lenguajes como PHP y JavaScript. Es conocido por
su simplicidad y facilidad de uso.
JDeveloper (Oracle JDeveloper):

JDeveloper es un IDE de Oracle específicamente diseñado para el desarrollo


de aplicaciones Java y otros tipos de aplicaciones empresariales. Proporciona
herramientas integradas para el desarrollo de aplicaciones Java EE y Oracle
ADF (Oracle Application Development Framework).
Estos son solo algunos ejemplos de los muchos IDEs disponibles para el
desarrollo en Java. La elección del IDE a menudo depende de las preferencias
personales, requisitos del proyecto y las características específicas que un
desarrollador busca en un entorno de desarrollo.
f. ¿Qué es un JDK? ¿Para qué sirve?(lo busque en chat gpt)

Un JDK (Java Development Kit) es un conjunto de herramientas y utilidades


necesarias para desarrollar aplicaciones en Java. Incluye un compilador, un
intérprete (o máquina virtual), bibliotecas, documentación y otros
componentes necesarios para el desarrollo de software en Java. El JDK es
esencial para escribir, compilar y ejecutar programas Java.

Funciones principales del JDK:


Compilación de Código Fuente:

El JDK incluye el compilador de Java (javac), que se utiliza para traducir el


código fuente escrito en Java a un formato ejecutable llamado bytecode.
Máquina Virtual Java (JVM):

El JDK contiene la JVM (Java Virtual Machine), que es una máquina virtual
que ejecuta el bytecode generado por el compilador. La JVM es responsable
de interpretar y ejecutar el código Java en diferentes plataformas,
proporcionando portabilidad a nivel de máquina virtual.
Bibliotecas y API:

El JDK proporciona una amplia variedad de bibliotecas y APIs (Interfaces de


Programación de Aplicaciones) que simplifican el desarrollo de software en
Java. Estas bibliotecas incluyen funciones para entrada/salida, manipulación
de datos, redes, GUI (Interfaz Gráfica de Usuario), y más.
Herramientas de Desarrollo:

El JDK incluye varias herramientas de desarrollo, como depuradores,


analizadores de perfiles, generadores de documentación (Javadoc), y otras
utilidades que facilitan el desarrollo, la depuración y el análisis del rendimiento
de las aplicaciones Java.
Archivos de Encabezado y Librerías Binarias:

Además de las herramientas de desarrollo, el JDK incluye archivos de


encabezado y bibliotecas binarias que son necesarios para enlazar y ejecutar
aplicaciones Java.
En resumen, el JDK es esencial para los desarrolladores que desean crear,
compilar y ejecutar aplicaciones en Java. Proporciona todas las herramientas
y recursos necesarios para desarrollar software Java de manera efectiva y
eficiente. Cuando se inicia un proyecto de desarrollo en Java, instalar el JDK
es uno de los primeros pasos importantes.

g. ¿Qué es UML? ¿Para qué le sirve al ingeniero de sistemas?


(lo busque en chat gpt)

UML (Unified Modeling Language, en español, Lenguaje Unificado de


Modelado) es un estándar de la industria para la visualización, diseño y
documentación de sistemas software y otros procesos complejos. Fue
desarrollado para unificar enfoques de modelado previos y proporcionar un
lenguaje común comprensible por todas las partes involucradas en el
desarrollo de software.

Utilidades del UML para el Ingeniero de Sistemas:


Comunicación Visual:

UML proporciona un conjunto de diagramas gráficos que permiten a los


ingenieros de sistemas comunicar ideas y conceptos de manera visual y
comprensible. Estos diagramas incluyen diagramas de clases, diagramas de
secuencia, diagramas de casos de uso, entre otros.
Diseño de Sistemas:

Los ingenieros de sistemas utilizan UML para diseñar la estructura y


comportamiento de un sistema antes de comenzar la implementación. Los
diagramas de clases, por ejemplo, ayudan a modelar las clases y las
relaciones entre ellas, mientras que los diagramas de secuencia representan
la interacción entre los componentes del sistema en el tiempo.
Documentación:

UML sirve como una herramienta eficaz para documentar el diseño y la


arquitectura de sistemas. Los diagramas generados con UML proporcionan
una representación clara y concisa de la estructura y el comportamiento del
sistema, lo que facilita la comprensión y el mantenimiento del código a lo
largo del tiempo.
Análisis de Requisitos:

Los diagramas de casos de uso en UML son particularmente útiles para


analizar y documentar los requisitos del sistema desde la perspectiva del
usuario. Ayudan a identificar los actores involucrados y las interacciones entre
ellos.
Modelado de Procesos Empresariales:

UML no solo se aplica al desarrollo de software, sino que también se utiliza


para modelar procesos empresariales. Diagramas como el de actividades
permiten representar de manera gráfica las actividades y flujos de trabajo en
una organización.
Detección de Problemas de Diseño:

Al visualizar un sistema a través de los diagramas de UML, los ingenieros de


sistemas pueden identificar posibles problemas de diseño o ambigüedades
antes de implementar el software. Esto facilita la toma de decisiones
informadas y evita costosas correcciones en etapas posteriores del
desarrollo.
En resumen, UML es una herramienta poderosa para el ingeniero de
sistemas, ya que proporciona un lenguaje estandarizado y visual para el
diseño, comunicación y documentación de sistemas complejos, mejorando la
eficiencia y la comprensión a lo largo de todo el ciclo de vida del desarrollo de
software.

2. Aparear la columna izquierda con la derecha según corresponda.


3. Seguimiento de programas (Lo hice en chat gpt )

Identifique que hace el siguiente código, de tres ejemplos mínimo y


concluya.
public int function(int x, int y)
{ int a = x, b = y;
int r = a%b;
int cont = 0;
while( r>0 )
{ a = b;
b = r;
r = a%b;
}
return b;
}

El código proporcionado parece implementar el algoritmo de Euclides para


encontrar el máximo común divisor (MCD) de dos números. Este algoritmo es
eficiente para calcular el MCD de dos números enteros positivos.

Aquí está el análisis del código:

Declaración de Variables:

int a = x, b = y;: Se inicializan dos variables a y b con los valores de x e y,


respectivamente.
int r = a%b;: Se calcula el residuo de la división de a entre b y se almacena en
la variable r.
int cont = 0;: Se inicializa una variable cont con el valor 0, pero no parece
utilizarse en el código proporcionado.
Bucle While:

while( r>0 ): Inicia un bucle while que continuará mientras el valor de r sea
mayor que 0.
En el bucle:
a = b;: a toma el valor de b.
b = r;: b toma el valor de r.
r = a%b;: Se recalcula el residuo y se almacena en r.
Retorno de Resultado:

return b;: El resultado final del algoritmo es el valor de b, que representa el


máximo común divisor de los números originales x e y.
Ejemplo de Uso:

public class Main {


public static void main(String[] args) {
int resultado = function(48, 18);
System.out.println("MCD: " + resultado);
}

public static int function(int x, int y) {


// (Código proporcionado)
}
}
En este ejemplo, se llama a la función function con los valores 48 y 18 como
argumentos. La función devuelve el máximo común divisor de estos dos
números, que en este caso es 6.

Conclusión:
El código implementa el algoritmo de Euclides para calcular el máximo común
divisor de dos números enteros. La variable cont no se utiliza en el código
proporcionado y podría haberse omitido. En resumen, la función function
devuelve el máximo común divisor de los valores x e y.

Ejemplo con 48 y 18:

public class Main {


public static void main(String[] args) {
int resultado = function(48, 18);
System.out.println("MCD de 48 y 18: " + resultado);
}

public static int function(int x, int y) {


int a = x, b = y;
int r = a % b;
int cont = 0;

while (r > 0) {
a = b;
b = r;
r = a % b;
}

return b;
}
}
Salida:

MCD de 48 y 18: 6
Ejemplo con 105 y 35:

public class Main {


public static void main(String[] args) {
int resultado = function(105, 35);
System.out.println("MCD de 105 y 35: " + resultado);
}

public static int function(int x, int y) {


// (Código proporcionado)
}
}
Salida:

MCD de 105 y 35: 35

4. Identificar los errores o malas prácticas de programación y


corregirlos. (lo hice con chat gpt)
public class empleado
{
private string nombre, identificación;
private double salarioBase;
Empleados()
{ nombre = "Juan";
identificacion = "";
salarioBase = 400000.0;
}
public double getSalarioBase()
{ return salarioBase;
}
public string getNombre()
{ return nombre;
}
public int calcularPago()
{
return salarioBase*1.2
}
//fin de la clase

Aquí hay algunas correcciones y mejoras en el código proporcionado:

Se corrigieron errores de sintaxis y se cambiaron algunos nombres de


variables para seguir convenciones de nomenclatura.
Se corrigió el nombre del constructor para que coincida con el nombre de la
clase (Empleado en lugar de Empleados).
Se corrigió la declaración del método calcularPago() para que devuelva un
valor double en lugar de int.
Se agregaron comentarios para mejorar la legibilidad del código.
Aquí está la versión corregida:

public class Empleado {


private String nombre, identificacion;
private double salarioBase;
// Constructor
public Empleado() {
nombre = "Juan";
identificacion = "";
salarioBase = 400000.0;
}

// Métodos Getter
public double getSalarioBase() {
return salarioBase;
}

public String getNombre() {


return nombre;
}

// Método para calcular el pago con un aumento del 20%


public double calcularPago() {
return salarioBase * 1.2;
}

// Fin de la clase
}
Cambios realizados:

Se corrigió el nombre del constructor de Empleados a Empleado.


Se corrigió el tipo de dato de identificación a String.
Se corrigió el tipo de dato del método calcularPago() para que devuelva un
double.
Se agregaron comentarios para explicar la funcionalidad de cada parte del
código y mejorar la legibilidad.
Estas correcciones y mejoras ayudan a que el código sea más claro y siga
buenas prácticas de programación en Java.
5. Programación(lo hice con chat gpt)

Le dan una clase que contiene como datos privados un vector (que se
declaró como int []v)
y una variable entera n que guarda el tamaño del vector. Con esta
información crear los
siguientes métodos:
a. Devuelve la cantidad de numero positivos
b. Imprime horizontalmente el contenido del vector
c. Llena el vector con números pares.
d. Devolver otro vector llenado con números negativos

Aquí tienes la implementación de los métodos que necesitas para la clase que
contiene un vector de enteros y una variable entera n que guarda el tamaño
del vector:

public class MiClase {


private int[] v;
private int n;

// Constructor
public MiClase(int size) {
n = size;
v = new int[n];
}

// Método para obtener la cantidad de números positivos en el vector


public int contarNumerosPositivos() {
int contador = 0;
for (int i = 0; i < n; i++) {
if (v[i] > 0) {
contador++;
}
}
return contador;
}

// Método para imprimir horizontalmente el contenido del vector


public void imprimirVectorHorizontal() {
for (int i = 0; i < n; i++) {
System.out.print(v[i] + " ");
}
System.out.println(); // Salto de línea al final
}

// Método para llenar el vector con números pares


public void llenarVectorConPares() {
for (int i = 0; i < n; i++) {
v[i] = 2 * (i + 1); // Números pares: 2, 4, 6, ...
}
}

// Método para devolver otro vector llenado con números negativos


public int[] obtenerVectorNegativos() {
int[] negativos = new int[n];
for (int i = 0; i < n; i++) {
negativos[i] = -v[i];
}
return negativos;
}

// Otros métodos y operaciones según sea necesario


}
Puedes usar estos métodos de la siguiente manera:
public class Main {
public static void main(String[] args) {
MiClase miObjeto = new MiClase(5);

// Llenar el vector con números pares


miObjeto.llenarVectorConPares();

// Imprimir el contenido del vector


System.out.println("Contenido del vector:");
miObjeto.imprimirVectorHorizontal();

// Contar la cantidad de números positivos


int positivos = miObjeto.contarNumerosPositivos();
System.out.println("Cantidad de números positivos: " + positivos);

// Obtener otro vector con números negativos


int[] negativos = miObjeto.obtenerVectorNegativos();
System.out.println("Vector de números negativos:");
for (int num : negativos) {
System.out.print(num + " ");
}
System.out.println();
}
}
Este es un ejemplo básico, y puedes adaptar la implementación según tus
necesidades específicas.

También podría gustarte