Sei sulla pagina 1di 21

Trabajo Colaborativo

Oscar Javier Achicanoy


Jackson Apraez
Santiago Sapuy Ramírez

Hemir Figueroa

Brayam Martínez Perdomo

Febrero 2018.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD

Escuela de Ciencias Básicas, Tecnología e Ingeniería

Programación Orientada a Objetos


1. Cuál es la diferencia entre programación estructurada y programación orientada a objetos.

Rta: La diferencia radica en que la programación estructurada permite la escritura de


programas fáciles de leer y modificar, lo que nos indica que el flujo lógico se gobierna por
tres estructuras de control básicas, como:

Las secuenciales, repetitivas y selectivas.

En la programación orientada a objeto es el paradigma que usa objetos y sus interacciones


para diseñar aplicaciones y programas de computadoras.

2. Ventajas y desventajas de la programación orientada a objetos.

Rta:

VENTAJAS

 Todo el código se encuentra en un solo lugar


 Los objetos pueden tener varios atributos, por ejemplo, que lea un sensor y a la vez
encienda.
 Son más fáciles de entender los códigos.
 Le ejecución del programa es rápida y sencilla, todo se encuentra en una sola ventana.

DESVENTAJAS

 Los programas no pueden ser moldeados enteramente por la programación orientada a


objetos.
 Para leer, modificar, o hacerles algo simplemente; en algunos programas debes realizar un
paso extra para realizar estas acciones.
 Si se fuerza el lenguaje puede perder algunos objetos y características.
 Los objetos requieren una extensa documentación.
 Los objetos al ser abstracto pueden no coincidir la visión de un programador a otro.

3. Sintaxis para definir variables en Java.


Rta:

Rangos Primitivos:
Char, boolean, byte, short, int, long, double o float

Variables de Instancia:
Final, public, protected, private, static, transient, volatile, abstract, sinchronized, strictfp,
native.

4. Sintaxis para imprimir en consola en Java.

Rta:

Para imprimir por pantalla se hace uso del objeto System.out, que representa la salida
estándar.

5. Sintaxis para comentar en Java

Rta:
Con doble slash "//" al inicio
//Esto es un comentario

6. Sintaxis de los operadores lógicos y relacionales.

Rta:

Operadores Lógicos: Nos permiten construir expresiones lógicas.

 '&&' : devuelve true si ambos operandos son true.


 '||' : devuelve true si alguno de los operandos son true.
 '!' : Niega el operando que se le pasa.
 '&' : devuelve true si ambos operandos son true, evaluándolos ambos.
 '|' : devuelve true uno de los operandos es true, evaluándolos ambos.
Operadores Relacionales: Permiten comparar variables según relación de igualdad/desigualdad
o relacción mayor/menor. Devuelven siempre un valor boolean.

 '>': Mayor que


 '<': Menor que
 '==': Iguales
 '¡=': Distintos
 '>=': Mayor o igual que
 '<=': Menor o igual que

7. Defina Clase, instancia de clase, atributo, comportamiento, identidad,


constructor e identificadores.
 Clase: (plantilla) es la que describe las características y el comportamiento de
un conjunto de objetos similares.
Es por tanto una plantilla implementada en software que describe un conjunto
de objetos con atributos y comportamiento similares
Por Ejemplo: La clase automóvil describe las características comunes de todos
los automóviles: sus atributos y su comportamiento.

Para crear una clase se utiliza la palabra reservada class y a continuación el


nombre de la clase. La definición de la clase se pone entre las llaves de apertura
y cierre. El nombre de la clase empieza por letra mayúscula.

class Rectangulo{
//miembros dato
//funciones miembro
}

 Instancia de clase: también llamada objeto de una clase es una


representación concreta y específica de una clase y que reside en la memoria
del ordenador.

 Atributos: Los atributos son las características individuales que diferencian un


objeto de otro y determinan su apariencia, estado u otras cualidades. Los
atributos se guardan en variables denominadas de instancia, y cada objeto
particular puede tener valores distintos para estas variables.
Comportamiento: El comportamiento de los objetos de una clase se implementa
mediante funciones miembro o métodos. (Un método es un conjunto de
instrucciones que realizan una determinada tarea y son similares a las funciones de
los lenguajes estructurados)

Del mismo modo que hay variables de instancia y de clase, también hay métodos
de instancia y de clase.

 Identidad: Es un dato que hace diferente al objeto en cuestión de otros


objetos. Siguiendo el ejemplo del objeto Camioneta su estado es el color, su
comportamiento son las acciones que realiza, o sea los métodos transportar
gente, acelerar y frenar mientras que su identidad es el propio nombre del
objeto.

 Constructor: Es un método especial dentro de una clase, que se llama


automáticamente cada vez que se crea un objeto de esa clase.

Dicho de otra manera; Un constructor es un método perteneciente a la clase


que posee unas características especiales:

 Posee el mismo nombre de la clase a la cual pertenece.

 No puede devolver ningún valor (ni siquiera se puede especificar la


palabra reservada void).
 Pueden existir varios, pero siguiendo las reglas de la sobrecarga de
funciones.
 De entre los que existan, tan sólo uno se ejecutará al crear un objeto de
la clase.
 No puede ser Heredado.
 Debe declararse como public, sólo en casos realmente extraordinarios
será de otro tipo.
Sintaxis: [modifVisibilidad] nombreConstructor (listaParámetros) [throws
listaExcepciones]
{
}

 Identificadores: Un identificador es un nombre que identifica a una variable, a


un método o función miembro, a una clase. Todos los lenguajes tienen ciertas
reglas para componer los identificadores:

 Todos los identificadores han de comenzar con una letra, el carácter subrayado
(_) o el carácter dólar ($).
 Puede incluir, pero no comenzar por un número
 No puede incluir el carácter espacio en blanco
 Distingue entre letras mayúsculas y minúsculas
 No se pueden utilizar las palabras reservadas como identificadores

Además de estas restricciones, hay ciertas convenciones que hacen que el


programa sea más legible, pero que no afectan a la ejecución del programa. La
primera y fundamental es la de encontrar un nombre que sea significativo, de
modo que el programa sea lo más legible posible. El tiempo que se pretende
ahorrar eligiendo nombres cortos y poco significativos se pierde con creces cuando
se revisa el programa después de cierto tiempo.

Tipo de
Convención Ejemplo
identificador
Comienza por letra String, Rectangulo,
nombre de una clase
mayúscula CinematicaApplet

nombre de función comienza con letra minúscula calcularArea, getValue, setColor

nombre de variable comienza por letra minúscula area, color, appletSize

nombre de constante En letras mayúsculas PI, MAX_ANCHO


8. Informe los tipos de clase: Una clase puede tener diferentes: Una clase
puede tener diferentes características y dependiendo de la necesidad podemos elegir
entre varios tipos. Encontramos 4 tipos de clases
Tipos de clase:

1- Public:

Tiene la característica de ser accesible desde cualquier otra clase.


Se puede acceder a ellas directamente o por herencia, estando en el mismo paquete o
desde otros paquetes, primero hay que importarlos con la sentencia “import”.

Un detalle de las clases del tipo “public” es que el archivo con el que se guardan debe
tener el mismo nombre de la clase, de otra forma se presentará un error de
compilación. Uno puede llamar a una clase public desde otra, si se encuentran en la
misma carpeta, de otra forma tendrá dificultades para interactuar con esta.

Un ejemplo de uso de una clase public sería:


public class carro {
// cuerpo de la clase
}
Y al momento de grabar el programa, tendríamos que ponerle al archivo el nombre de
“carro.java”.

2-Abstrac:

Sin la necesidad de implementar métodos, es decir se dejan incompletos para


después ser refinados mediante el mecanismo de la herencia, se puede fijar un
conjunto de métodos y atributos. Las clases abstractas trabajan junto con los
métodos abstractos, los cuales están vacíos. Esto es muy útil cuando la
implementación es específica pero cada usuario, cada uno puede implementarlos
como le parezca, pero sus métodos deben tener los mismos nombres que se dieron
antes.

Por ejemplo al ver una declaración de métodos en una clase abstracta solo podemos
observar algunas líneas que solamente tienen los datos que van a recibir los métodos,
pero el código que ejecutara el método no está, eso quiere.

Decir que podría estar en otro sitio. Se puede decir que es una base para la herencia.
Pueden ser a la vez clases “public”. Aquí un ejemplo de una clase:
public abstract class Triangulo {
public abstract void Area_Triangulo(int b,int h);
public abstract void Perímetro( int x,int y,int z);
...
}
3-Final:

Una clase final es la que acaba con una cadena de herencia. De la clase final no se
puede heredar nada. Al decir que termina la cadena de herencia significa que ya no se
sub-divide en más clases, pues indica que es el final delas divisiones.
Las organizaciones de clases en java suelen ser de la siguiente forma:
class A{}
class B extends A { }

Con lo que se indica que de la clase A sale una sub-clase o clase hija que es B. Pero
se puede modificar este tipo de organizaciones al usar “final”.
Sería de la siguiente forma:
final class A { }

Con lo que se está indicando que de la clase A no van a salir otras clases. Es posible
mezclar final con public, es decir, se puede tener algo como esto:
public final class A{ }
Uno puede declarar su clase como “final” por algunos motivos.
Motivo de seguridad.
Motivo de eficiencia.
Por ejemplo, la clase java.lang.String

está declarada como “final”, por lo tanto no permite crear una sub-clase String y darle
un método length() que yo haya creado y que haga algo diferente a devolverme la
longitud de una cadena. El otro motivo para usar “final” es la eficiencia. Se trabaja
solo con instancias de la clase sin tener que ir a las sub-clases, así puedes optimizar
esa clase.

4-Synchronizable:
“Synchronizable” se especifica que todos los métodos que esténdefinidos dentro de
esta clase serán sincronizados. Para esto debemos saberque la computadora puede
llevar a cabo varios threads a la vez; un thread esun flujo de control para controlar la
ejecución de un programa.

9. Describa el concepto de Modularización


10. Describa el concepto de Herencia
11. Describa el concepto de Polimorfismo
12. Describa el concepto de Encapsulamiento
13. Informe cómo convertir un String a entero en Java
14. Defina el concepto de método y realice un ejemplo constructor
15. Qué función tiene el paquete Swing en Java y describa sus principales
características
16. Consultar la estructura y sintaxis de cómo funcionan las excepciones en Java.

3. Análisis de requisitos del proyecto

Una vez elegida la propuesta a desarrollar, entre los compañeros del grupo
colaborativo deberán diseñar el Análisis de requisitos del proyecto el cual comprende:
Definición del problema, Objetivo general, objetivos específicos, Requisitos
funcionales y No funcionales.

9. concepto modularización: la modularización consiste en dividir un problema en


módulos para lo cual realizar y entender el planteamiento del problema, así mismo se
entiende mejor el problema principal.

Ventaja: la modularización nos ofrece la división del problema para lo cual es más
fácil entender el problema.

Desventaja: la unión de todas las divisiones o módulos es un poco complejo ya que se


necesita la integración de cada uno para dar solución al problema principal.

10. CONCEPTO HERENCIA: nos permite la deficion de una clase a partir de una ya
existente, comparte automáticamente los métodos y datos entre clases, subclases y
objetos.
Hay dos tipos de herencia: Herencia Simple y Herencia Múltiple. La primera indica que
se pueden definir nuevas clases solamente a partir de una clase inicial mientras que la
segunda indica que se pueden definir nuevas clases a partir de dos o más clases
iniciales. Java sólo permite herencia simple.

11. CONCEPTO DE POLIMORFISMO: Polimorfismo es la capacidad de un objeto de


adquirir varias formas. El uso más común de polimorfismo en programación orientada
a objetos se da cuando se utiliza la referencia de una clase padre, para referirse al
objeto de la clase hijo.

12. CONCEPTO ENCAPSULAMIENTO: consiste en permitir la visibilidad de atributos y/o


métodos, en una clase determinada, teniendo así tres niveles de: privados (private)
que se utilizaran solo en esa clase, protegidos (protected) que se utilizaran por todas
los métodos, clases y /o atributos mientras se encuentre en el mismo package, y los
públicos (public) que pueden ser usados por cualquier clase o método.

13. Informe cómo convertir un String a entero en Java

Para eliminar estos espacios tenemos la función miembro trim

String str=" 12 ";


String str1=str.trim();

Para convertir un string en número entero, primero quitamos los espacios en blanco al
principio y al final y luego, llamamos a la función miembro estática parseInt de la
clase Integer (clase envolvente que describe los números enteros)

String str=" 12 ";


int numero=Integer.parseInt(str.trim());

Para convertir un string en número decimal (double) se requieren dos pasos:


convertir el string en un objeto de la clase envolvente Double, mediante la función
miembro estática valueOf, y a continuación convertir el objeto de la clase Double en
un tipo primitivo double mediante la función doubleValue

String str="12.35 ";


double numero=Double.valueOf(str).doubleValue();

Se puede hacer el mismo procedimiento para convertir un string a número entero


String str="12";
int numero=Integer.valueOf(str).intValue();

14. Defina el concepto de método y realice un ejemplo constructor

Se refiere al medio utilizado para llegar a un fin. Su significado original señala el


camino que conduce a un lugar. En Java es un método especial dentro de una clase,
que se llama automáticamente cada vez que se crea un objeto de esa clase.

class Persona

//ATRIBUTOS

private String nombre;

private int edad;

private String empleo;

private double salario;

15 Qué función tiene el paquete Swing en Java y describa sus principales


características

El paquete Swing es el nuevo paquete gráfico que ha aparecido en la versión 1.2 de


Java. Está compuesto por un amplio conjunto de componentes de interfaces de
usuario que funcionen en el mayor número posible de plataformas.

Cada uno de los componentes de este paquete puede presentar diversos aspectos y
comportamientos en función de una biblioteca de clases. En la versión 1.0 de Swing,
que corresponde a la distribuida en la versión 1.2 de la API de Java se incluyen tres
bibliotecas de aspecto y comportamiento para Swing:

 metal.jar: Aspecto y comportamiento independiente de la plataforma.


 motif.jar: Basado en la interfaz Sun Motif.
 windows.jar: Muy similar a las interfaces Microsoft Windows.
La siguiente imagen muestra una aplicación de ejemplo (adjunta al JDK 1.2) que
muestra las diferentes interfaces para una misma aplicación según se utilice una u
otra biblioteca:
Es la nueva clase denominada UiManager la que se encarga del aspecto y
comportamiento de una aplicación Swing en un entorno de ejecución.
Este paquete nos brinda ciertas facilidades para la construcción de interfaces graficas
de usuario

 La arquitectura Swing presenta una serie de ventajas respecto a su


antecedente AWT:

 Amplia variedad de componentes: En general las clases que comiencen por "J" son
componentes que se pueden añadir a la aplicación. Por ejemplo: JButton.

 Aspecto modificable (look and feel): Se puede personalizar el aspecto de las


interfaces o utilizar varios aspectos que existen por defecto (Metal Max, Basic Motif,
Windows Win32).

 Arquitectura Modelo-Vista-Controlador: Esta arquitectura da lugar a todo un


enfoque de desarrollo muy arraigado en los entornos gráficos de usuario realizados
con técnicas orientadas a objetos. Cada componente tiene asociado una clase de
modelo de datos y una interfaz que utiliza. Se puede crear un modelo de datos
personalizado para cada componente, con sólo heredar de la clase Model.

 Gestión mejorada de la entrada del usuario: Se pueden gestionar combinaciones de


teclas en un objeto KeyStroke y registrarlo como componente. El evento se activará
cuando se pulse dicha combinación si está siendo utilizado el componente, la
ventana en que se encuentra o algún hijo del componente.

 Objetos de acción (action objects): Estos objetos cuando están activados (enabled)
controlan las acciones de varios objetos componentes de la interfaz. Son hijos de
ActionListener.

 Contenedores anidados: Cualquier componente puede estar anidado en otro. Por


ejemplo, un gráfico se puede anidar en una lista.

 Escritorios virtuales: Se pueden crear escritorios virtuales o "interfaz de múltiples


documentos" mediante las clases JDesktopPane y JInternalFrame.
 Bordes complejos: Los componentes pueden presentar nuevos tipos de bordes.
Además el usuario puede crear tipos de bordes personalizados.

 Diálogos personalizados: Se pueden crear multitud de formas de mensajes y


opciones de diálogo con el usuario, mediante la clase JOptionPane.

 Clases para diálogos habituales: Se puede utilizar JFileChooser para elegir un


fichero, y JColorChooser para elegir un color.

 Componentes para tablas y árboles de datos: Mediante las clases JTable y JTree.

 Potentes manipuladores de texto: Además de campos y áreas de texto, se


presentan campos de sintaxis oculta JPassword, y texto con múltiples fuentes
JTextPane. Además hay paquetes para utilizar ficheros en formato HTML o RTF.

 Capacidad para "deshacer": En gran variedad de situaciones se pueden deshacer


las modificaciones que se realizaron.

 Soporte a la accesibilidad: Se facilita la generación de interfaces que ayuden a la


accesibilidad de discapacitados, por ejemplo en Braille.

16 Consultar la estructura y sintaxis de cómo funcionan las excepciones en


Java.

Excepciones, o sencillamente problemas. En la programación siempre se producen


errores, más o menos graves, pero que hay que gestionar y tratar correctamente. Por
ello en java disponemos de un mecanismo consistente en el uso de bloques
try/catch/finally. La técnica básica consiste en colocar las instrucciones que podrían
provocar problemas dentro de un bloque try, y colocar a continuación uno o más
bloques catch, de tal forma que si se provoca un error de un determinado tipo, lo que
haremos será saltar al bloque catch capaz de gestionar ese tipo de error específico. El
bloque catch contendrá el código necesario para gestionar ese tipo específico de error.
Suponiendo que no se hubiesen provocado errores en el bloque try, nunca se
ejecutarían los bloques catch.
Veamos ahora la estructura del bloque try/catch/finally:

try
{
//Código que puede provocar errores
}
catch(Tipo1 var1)
{
//Gestión del error var1, de tipo Tipo1
}
[

catch(TipoN varN)
{
//Gestión del error varN, de tipo TipoN
}]
[
finally
{
//Código de finally
}
]

Como podemos ver es obligatorio que exista la zona try, o zona de pruebas, donde
pondremos las instrucciones problemáticas. Después vienen una o más zonas catch,
cada una especializada en un tipo de error o excepción. Por último está la zona finally,
encargada de tener un código que se ejecutará siempre, independientemente de si se
produjeron o no errores.
Se puede apreciar que cada catch se parece a una función en la cual sólo recibimos
un objeto de un determinado tipo, precisamente el tipo del error. Es decir sólo se
llamará al catch cuyo argumento sea coincidente en tipo con el tipo del error
generado. En Java los errores en tiempo de ejecución (cuando se esta ejecutando el
programa) se denominan excepciones, y esto ocurre cuando se produce un error en
alguna de las instrucciones de nuestro programa, como por ejemplo cuando se hace
una división entre cero, cuando un objeto es 'null' y no puede serlo, cuando no se
abre correctamente un fichero, etc. Cuando se produce una excepción se muestra en
la pantalla un mensaje de error y finaliza la ejecución del programa.
En Java (al igual que en otros lenguajes de programación), existen mucho tipos de
excepciones y enumerar cada uno de ellos seria casi una labor infinita. En lo referente
a las excepciones hay que decir que se aprenden a base experiencia, de encontrarte
con ellas y de saber solucionarlas. Cuando en Java se produce una excepción se crear
un objeto de una determina clase (dependiendo del tipo de error que se haya
producido), que mantendrá la información sobre el error producido y nos
proporcionará los métodos necesarios para obtener dicha información. Estas clases
tienen como clase padre la clase Throwable, por tanto, se mantiene una jerarquía en
las excepciones. A continuación, mostramos algunas de las clases para que nos
hagamos una idea de la jerarquía que siguen las excepciones, pero existen
muchísimas más excepciones que las que mostramos.
DEFINICIÓN DEL PROBLEMA

El Mini mercado Surtimax S.A es una empresa unifamiliar la cual es atendida por José
Andrés Cárdenas y Gloria Martínez, quienes son los Propietarios del Mini Mercado.
Actualmente el Mini mercado solo cuenta con cinco clientes (Véase figura 1) y solo
ofrece algunos productos a la venta (Véase figura 2). De igual manera se debe tener
en cuenta otros roles de usuario (Véase figura 3).

Figura 1. Clientes Mini mercado La Granjita S.A

Identificación Nombre Completo Edad Teléfono Dirección

109845678 Elizabeth Rincón 23 6441934 Cra 21 15-02

3214567 Zulia Vega 25 7245678 AV 115 25-40

36789065 Alexander Otálora 45 6543213 Cra 24 Nro 38-18

1099765 Lucia Acuña 28 6789054 Cra 25 Nro 45-125

2567890 Taliana Vargas 27 6789032 Diag 25 Nro 12-45

16789045 Carlos Medina 35 7896543 Cra 25 Nro 76-25

Figura 2. Productos disponibles en Mini mercado Surtimax S.A

Nombre del Tipo de Unidad de


Costo
producto producto medida
Aceite No Perecedero Litros $ 2500
Arroz No Perecedero Kilogramos $1300
Pastas No Perecedero Kilogramos $900
Tomate Perecedero Kilogramos $1500
Cebolla Perecedero Kilogramos $1200
Figura 3 Otros roles de usuarios

Nombre
Identificación Teléfono Dirección Rol
Completo
3214567 Zulia Vega 7245678 AV 115 25-40 Administrador
2874963 Andrés Cortes 5555555 Cra 34 17-80 Empleado

Para lograr un buen funcionamiento del negocio se requiere el desarrollo de una


aplicación que realice los siguientes procesos:
Registro de Productos: El módulo debe permitir el ingreso de nuevos productos
permitiendo registrar su nombre, tipo de producto y unidad de medida.
Registro de Clientes: En este módulo debe permitir registrar el nombre, la edad, la
dirección y el teléfono celular de cada cliente.
Actualización Información de Productos: En este módulo se debe permitir
actualizar la información del producto ya registrado o la modificación de los datos
relacionados con ésta.
Venta de productos: En este módulo debe permitir realizar el proceso de venta de
productos, registrando el producto y los datos básicos del cliente.
Consulta de Productos: En este módulo debe permitir consultar información
relacionada con los productos, teniendo como criterios de consulta como: El nombre
del producto, el tipo de producto y Unidad de Medida.
Finalmente, al ejecutar la aplicación, esta debe solicitar un password y Login para
garantizar la seguridad de la aplicación y el acceso solo a personal autorizado. Se
debe tener en cuenta que no se permite en el password los siguientes caracteres:
#,!,¡,?,^,¿,|,° por lo que es obligatorio hacer uso de los bloques de excepciones en
Java para evitar estos caracteres.
Para el desarrollo de este proyecto se debe utilizar el paradigma orientado a objetos
(clases, herencia, polimorfismo, encapsulamiento, etc), así mismo se debe utilizar la
base de datos MYSQL como base de datos predeterminada. El código de la aplicación
debe ser comentado en su totalidad.
Al finalizar el proyecto en la Fase 5 uno de los integrantes del grupo debe comprimir
en una carpeta el archivo ejecutable, y éste será el mismo que ejecutará el docente al
momento de la calificación.
OBJETIVO GENERAL

Se va a implementar una aplicación para un supermercado, basado en programación


orientada a objetos, donde se permita hacer las modificaciones necesarias solicitadas
por el cliente; partiendo de la seguridad de la información contenida en el aplicativo,
en el cual solo tendrá acceso (Login) a él, por medio una Contraseña (Password).
OBJETIVOS ESPECIFICOS

 Analizar, diseñar y permitir el ingreso al aplicativo aquellas que tengan acceso a


la contraseña.
 Analizar y establecer los requerimientos en el ingreso de nuevos productos
permitiendo registrar su nombre, tipo de producto y unidad de medida.
 Permitir registrar el nombre, la edad, la dirección y el teléfono celular de cada
cliente.
 Actualizar la información del producto ya registrado o la modificación de los
datos relacionados con ésta.
 Gestionar y permitir el proceso de venta de productos, registrando el producto y
los datos básicos del cliente.
 Analizar, gestionar y consultar la información relacionada con los productos,
teniendo como criterios de consulta como: El nombre del producto, el tipo de
producto y Unidad de Medida.
Requisitos Funcionales
Y
No Funcionales

En el momento en que un empleado de la entidad autorizado, ejecute el programa,


este debe loguearse por medio de una Contraseña (Password). Teniendo en cuenta
que no se permite en el password los siguientes caracteres: #,!,¡,?,^,¿,|,° por lo que
es obligatorio hacer uso de los bloques de excepciones en Java para evitar estos
caracteres.

Potrebbero piacerti anche