Está en la página 1de 23

FASE 1

ANALISIS DE REQUERIMIENTOS

PROGRAMACION ORIENTADA A OBJETOS

MARTA ISABEL MUELAS. CÓD.: 48.660.111


JHON STIVEN MEJIA COD.:1.116.256.861
LUZ STELLA LANCHEROS OROZCO. CÓD. 38640188
LUISA MARCELA CARDENAS VERA COD 1054545838

GRUPO: 301403_52

PRESENTADO A:

JORGE ALBERTO CORREA

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA (UNAD)

AÑO 2018
INTRODUCCION

La Programación Orientada a Objetos trata de utilizar un enfoque real del mundo


dentro de nuestros programas. La visión que se tiene del mundo dentro de la
programación orientada a objetos es que se encuentra hecho por objetos. Para
comprender bien la programación orientada a objetos tenemos que olvidar un poco la
Programación Estructurada ya que si nos fijamos bien es algo artificial, la
programación orientada a objetos es una forma de emprender los problemas más
naturales. Aquí natural significa más en contacto con el mundo real que nos rodea, de
esta forma si queremos resolver un problema concluyente, debemos identificar cada
una de las partes del problema con objetos presentes en el mundo real.
1. Elección del proyecto a desarrollar:

PROYECTO A En la Universidad Nacional Abierta y a Distancia UNAD se cuenta con el


departamento de registro y control el cual se encarga de la matrícula de los estudiantes y a
su vez del registro de cada una de las calificaciones obtenidas por los estudiantes en los
diferentes cursos académicos. Registro y control está conformado por cinco funcionarios,
quienes son los únicos con acceso al sistema (Véase figura 1). Actualmente la universidad
solo cuenta con 8 estudiantes matriculados (Véase figura 2). También intervienen en el
proceso otros actores (Véase figura 3), sin embargo, pensando en el crecimiento de la
institución se requiere una aplicación que permita realizar de forma automatizada los
siguientes procesos.

2.1 Cuál es la diferencia entre programación estructurada y programación orientada


a objetos.

Respuesta

PROGRAMACIÓN ESTRUCTURADA PROGRAMACIÓN ORIENTADA A


OBJETOS
Consta de una estructura donde se va Se basa en una nueva forma de pensar los
ejecutando paso a paso, contiene una problemas, se declaran como variables a los
secuencia y una lógica para que su función tipos de datos de los objeto del problema y
sea eficiente. cada objeto tiene anidadas variables que
hacen referencia al dato.
Se basa en lenguajes que soportan sintáctica Es moderna se dice que es una evolución de
y semánticamente la unión entre los tipos la programación estructurada donde plasma
abstractos de datos y sus operaciones a esta el diseño de una familia de lenguajes.
unión llamada clase.
Se pretenda resolver un problema de Resuelve el problema identificando los
principio a fin en una sola estructura de actores que tienen participación en el
código. problema y también identificando sus
acciones.

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

VENTAJAS DESVENTAJAS
Reusabilidad: al realizar un diseño Cambio en la forma de pensar de la
adecuado de las clases este se puede usar en programación tradicional a la orientada a
diversas partes del programa. objetos.

Mantenibilidad: Por la sencillez para La ejecución de programas orientados a


abstraer el problema, los programas objetos es más lenta.
orientados a objeto son más sencillos de leer
y entender, ya que nos permite ocultar
detalles de implementación dejando visibles
solo aquellos detalles relevantes.
Modificabilidad: la facilidad de añadir, La necesidad de utilizar bibliotecas de
suprimir o modificar nuevos objetos nos clases obliga a su aprendizaje y
permiten hacer modificaciones de forma entrenamiento.
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.

2.3. Sintaxis para definir variables en Java.

Las Primitivas: Puede ser cualquiera de los 8 tipos: char, boolean, byte, short, int, long,
double o float. Una vez que un primitivo ha sido declarado, el tipo primitivo no puede
cambiar nunca, sin embargo su valor sí.

Variables de Referencia:

Una variable de referencia es usada para referenciar (o acceder) a un objeto. Una variable
de referencia es declarada para ser un tipo específico y el tipo no puede ser nunca
cambiado. Una variable de referencia puede ser usado para referir a cualquier objeto del
tipo declarado, o a un subtipo del tipo declarado (un tipo compatible)

Sintaxis: <nombre de la función>(<arg1>, <arg2>,…<argN>)

Class <NombreClase>

//declaración de atributos.

<Tipo><variable>;…<tipo><variable>;

//declaración de métodos

<tipo> <nombreMetodo> ( <tipo><argumento>,…)

{… }

}
2.4. Sintaxis para imprimir en consola en Java

Sintaxis System.out // uno de la variable out

Print( ) imprime el argumento parado a la salida estándar (normalmente la consola). Sin un


carácter fin de línea.

Ejemplo

Public clacs PruebaImpresion 1{

Public static Void main(String args[])}

For (int i=1;i<5,++i){

System.out.print(“ línea número”+i);

public clacs pruebaImprsion2{

public static void main(String args[]){

for (int i=1;i<5;++i){

system.out.println(”línea número”+i);

2.5. Sintaxis para comentar en Java

Los comentarios permiten añadir al código fuente notas o comentarios de texto que son
ignorados por el compilador. Los comentarios vienen en tres formatos:

1 // Comentario de una sola línea

2 /* Comentario
multilínea */

3 //** Comentario de

documentación */

1. Los comentarios de una sola línea comienzan con // y continuan hasta el final de la

línea.

2. Los comentarios comienzan con /* y terminan con */

3. Los comentarios de documentación son un tipo especial de comentarios multilínea

que arranca con /**.Se utiliza para empotrar en la documentación del código fuente

de una clave y se puede leer con el propio código fuente con la herramienta Javadoc

para genera documentación HTML para sus clases.

2.6 Sintaxis de los operadores lógicos y relacionales

OPERADOR DESCRIPCIÓN

== Es igual

!= Es distinto

<, <=, >, >= Menor, menor o igual, mayor, mayor o igual

&& Operador and (y)

|| Operador or (o)

! Operador not (no)

Operadores lógicos principales en Java

public class RelacionApp {

public static void main(String[] args) {


int x=8;

int y=5;

boolean compara=(x<y);

System.out.println("x<y es "+compara);

compara=(x>y);

System.out.println("x>y es "+compara);

compara=(x==y);

System.out.println("x==y es "+compara);

compara=(x!=y);

System.out.println("x!=y es "+compara);

compara=(x<=y);

System.out.println("x<=y es "+compara);

compara=(x>=y);

System.out.println("x>=y es "+compara);

2.7 Defina Clase, instancia de clase, atributo, comportamiento, identidad, constructor


e identificadores.

Clase: 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: En general, cuando se ejecuta un programa en un computador, se dice
que éste se instancia. En los lenguajes de programación orientada a objetos un objeto es una
instancia de una clase. Esto es, un miembro de una clase que tiene atributos en lugar de
variables. En un contexto del mundo real, podríamos pensar en "Casa" como una clase y en
un chalet como una instancia de esta e incluso otro chalet u otro tipo de casa como puede
ser un apartamento como otra instancia.1 En este caso no importa el tipo de casa, si fuese
de nuestro interés modelarlo y especificarlo, diferenciaríamos entre un chalet y un
apartamento con dos clases, entidades o prototipos diferentes

Atributo: 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.

Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase
y a todas sus instancias. Por ejemplo, el número de ruedas de un automóvil es el mismo
cuatro, para todos los automóviles. Número de ruedas de un automóvil es el mismo cuatro,
para todos los automóviles.

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. En el primer caso, un objeto llama a un método para realizar una
determinada tarea, en el segundo, el método se llama desde la propia clase.

Identificadores: Cómo se escriben los nombres de las variables, de las clases, de las
funciones, etc., es un asunto muy importante de cara a la comprensión y el mantenimiento
de código. En la introducción a los fundamentos del lenguaje Java hemos tratado ya de los
identificadores.

El código debe de ser tanto más fácil de leer y de entender como sea posible. Alguien que
lea el código, incluso después de cierto tiempo, debe ser capaz de entender lo que hace a
primera vista, aunque los detalles internos, es decir, cómo lo hace, precise un estudio
detallado.

2.8 Informe los tipos de clase

El modificador es el tipo de clase que se está creando. De acuerdo a este modificador,


nuestra clase puede tener diferentes características. Según cómo necesitamos que funcione
nuestra clase podemos elegir entre un tipo u otro. En java existen 4 tipos de clases:

Public
Abstract
Final
Synchronizable

2.9 La modularidad es en programación orientada a objetos, la propiedad que permite


subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe
ser tan independiente como sea posible de la aplicación en sí y de las restantes partes, la
modularidad debe seguir los conceptos de acoplamiento y cohesión.

2.10 El concepto de Herencia

Es la relación entre una clase general y otra clase más específica. Por ejemplo: Si
declaramos una clase párrafo derivada de una clase texto, todos los métodos y variables
asociadas con la clase texto, son automáticamente heredados por la subclase párrafo.

La idea de la herencia es permitir la creación de nuevas clases basadas en clases existentes.


Cuando heredamos de una clase existente, reusamos (o heredamos) métodos y campos, y
agregamos nuevos campos y métodos para cumplir con la situación nueva.
Cada vez que encontremos la relación "es-un" entre dos clases, estamos ante la presencia de
herencia.

2.11 Concepto de polimorfismo

Es la capacidad o propiedad que tienen los objetos de una clase de responder al mismo
mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto
polimórfico es una entidad que puede contener valores de diferentes tipos durante la
ejecución del programa. Los objetos manipulan los datos de entrada para la obtención de
datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.

2.12 Concepto de encapsulamiento

Se denomina al ocultamiento del estado, es decir, del dato miembro de un objeto de manera
que solo se pueda cambiar mediante las operaciones definidas para ese objeto.

Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce
a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados de
un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando
efectos secundarios e interacciones.

De esta forma el usuario de la clase puede obviar la implementación de los métodos y


propiedades para concentrarse solo en cómo usarlos. Por otro lado se evita que el usuario
pueda cambiar su estado de maneras imprevistas e incontroladas.

2.12. Describa el concepto de Encapsulamiento


Es el proceso de almacenar en una misma sección los elementos de una abstracción
que constituyen su estructura y su comportamiento; sirve para separar el interfaz
contractual de una abstracción y su implantación.

Existen 3 niveles e acceso para el


encapsulamiento:

Publico: todos pueden acceder a datos

Protegido: solamente son accesibles dentro de su clase y subclase

Privado: se pueden declarar miembros accesibles solo para la propia clase.

2.13 Informe cómo convertir un String a entero en Java

StringnumCadena="1";

int numEntero = Integer.parseInt(numCadena);

Si los espacios vienen al principio o al final, con un simple trim bastará


para
eliminarlos, por ejemplo ("1")
numCadena.trim();
Si tenemos espacio entre los números deberíamos usar el método replaceAll (" 1 3 45
6")

numCadena.replaceAll(" ", "");

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


Método es el algoritmo asociado a un objeto (o a una clase de objetos),cuya ejecución
se desencadena tras la recepción de un mensaje.

Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un


método puede producir un cambio en las propiedades del objeto, o la generación de
un "evento" con un nuevo mensaje para otro objeto del sistema.

Categorias de metodos: inicializadores, setters, operadores, destructores, getters,


visualizadores, constructores, otros.

METODO CONSTRUCTOR: Es un método que inicializa un objeto inmediatamente


después de su creación, tiene exactamente el mismo nombre de la clase en la que
residen, una vez definido se llama automáticamente al constructor después de crear el
objeto, sin indicación de tipo devuelto ( ni siquiera void).

Ejemplo de constructor: En un constructor es frecuente usar un esquema de este tipo:

/* Ejemplo - aprenderaprogramar.com */

public MismoNombreQueLaClase (tipo parámetro1, tipo parámetro2 …, tipo


parámetro n ) {

campo1 = valor o parámetro;

campo2 = valor o parámetro;

.
.

campo n = valor o parámetro;

Nota: La inicialización de campos y variables es un proceso muy importante. Su mala


definición es fuente de problemas en el desarrollo de programas. Como regla de
buena programación, cuando crees campos o variables, procede de forma inmediata a
definir su inicialización.

Los constructores tienen el mismo nombre que la clase en la que son definidos y
nunca tienen tipo de retorno, ni especificado ni void. Tenemos aquí un aspecto que
nos permite diferenciar constructores de métodos: un constructor nunca tiene tipo de
retorno mientras que un método siempre lo tiene. Es recomendable que en un
constructor se inicialicen todos los atributos de la clase aunque su valor vaya a ser
nulo o vacío. Si un atributo se quiere inicializar a cero (valores numéricos) siempre lo
declararemos específicamente: nombreAtributo = 0;. Si un atributo se quiere
inicializar a contenido nulo (atributos que son objetos) siempre lo declararemos
específicamente: nombreAtributo = null;. Si un atributo tipo texto se quiere inicializar
vacío siempre lo declararemos específicamente: nombreAtributo = “”;. El motivo para
actuar de esta manera es que declarando los atributos como nulos o vacíos, dejamos
claro que esa es nuestra decisión como programadores. Si dejamos de incluir uno o
varios campos en el constructor puede quedar la duda de si hemos olvidado inicializar
ese campo o inducir a pensar que trabajamos con malas prácticas de programación. /*
Ejemplo - aprenderaprogramar.com */

public class Taxi { //El nombre de la clase


private String ciudad; //Ciudad de cada objeto taxi
private String matricula; //Matrícula de cada objeto
taxi private String distrito; //Distrito asignado a cada
objeto taxi

private int tipoMotor; //Tipo de motor asignado a cada objeto taxi. 0 =


desconocido, 1 = gasolina, 2 = diesel

//Constructor: cuando se cree un objeto taxi se ejecutará el código que incluyamos en


el constructor

public Taxi (String valorMatricula, String valorDistrito, int valorTipoMotor) {

ciudad = "México D.F.";

matricula = valorMatricula;

distrito = valorDistrito;

tipoMotor = valorTipoMotor;

} //Cierre del constructor

//Método para obtener la matrícula del objeto taxi


public String getMatricula () { return matricula; } //Cierre del método

//Método para obtener el distrito del objeto taxi

public String getDistrito () { return distrito; } //Cierre del método

//Método para obtener el tipo de motor del objeto taxi

public int getTipoMotor () { return tipoMotor; } //Cierre del método

} //Cierre de la clase

2.15 Qué función tiene el paquete Swing en Java y describa sus principales
características

El paquete Swing es parte de la JFC (Java Foundation Classes) en la plataforma Java.


La JFC provee facilidades para ayudar a la gente a construir GUIs. Swing abarca
componentes como botones, tablas, marcos, etc...

Las componentes Swing se identifican porque pertenecen al paquete javax.swing.


Las componentes de Swing utilizan la infraestructura de AWT, incluyendo el
modelo de eventos AWT, el cual rige cómo una componente reacciona a eventos tales
como, eventos de teclado, mouse, etc... Es por esto, que la mayoría de los programas
Swing necesitan importar dos paquetes AWT: java.awt.* y java.awt.event.*.
Estructura básica de una aplicación Swing.

Una aplicación Swing se construye mezclando componentes con las siguientes reglas.

• Debe existir, al menos, un contenedor de alto nivel (Top-Level Container), que


provee el soporte que las componentes Swing necesitan para el pintado y el manejo de
eventos.

• Otras componentes colgando del contenedor de alto nivel (éstas pueden ser
contenedores o componentes simples).

Ejemplo 1:

import
javax.swing.*;
import
java.awt.*;
import
java.awt.event
.*;

public class HolaMundoSwing {

public static void main(String[] args) {

JFrame frame = new


JFrame("HolaMundoSwing"); final JLabel
label = new JLabel("Hola Mundo");
frame.getContentPane().add(label);

//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.addWindowListener(new
java.awt.event.WindowAdapter(){ public void
windowClosing(WindowEvent e){

System.exit(0);

}
}
);

frame.pack();
frame.setVisible(true);
}
}

Descripción del ejemplo.

En las primeras líneas se importan los paquetes necesarios.

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;
Luego se declara la clase HolaMundoSwing y en el método main se setea el top level
container:

public class HolaMundoSwing {

public static void main(String[] args) {

JFrame frame = new JFrame("HolaMundoSwing");

...

frame.pack();

frame.setVisible(true);

En el ejemplo, sólo hay un contenedor de alto nivel, un JFrame. Un frame


implementado como una instancia de la clase JFrame es una ventana con
decoraciones, tales como, borde, título y botones como íconos y para cerrar la
ventana. Aplicaciones con un GUI típicamente usan, al menos, un frame.

Además, el ejemplo tiene un componente, una etiqueta que dice "Hola Mundo".

final JLabel label = new JLabel("Hola Mundo"); //construye el JLabel.

frame.getContentPane().add(label); //agrega el label al frame.


Para que el botón de cerrar cierre la ventana, hay dos opciones:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //JDK
1.3+

frame.addWindowListener(new java.awt.event.WindowAdapter(){ //versiones


anteriores

public void windowClosing(WindowEvent e){

System.exit(0);

}
}
);
2.16 Consultar la estructura y sintaxis de cómo funcionan las excepciones en
Java.

En Java los errores en tiempo de ejecución se denominan excepciones, y esto ocurre


cuando se produce un error en alguna de las instrucciones de nuestro programa.
Cuando se produce una excepción se muestra en la pantalla un mensaje de error y
finaliza la ejecución del programa.

Cuando en Java se produce una excepción se crear un objeto de una determina clase
dependiendo del error 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:

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 cuál 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

3. Análisis de requisitos del proyecto.

3.1 Definición del problema

El sistema no está preparado para la matrícula de una gran cantidad de estudiantes ya que
actualmente el sistema está adaptado para la matrícula de pocos estudiantes y en el
momento solo cuenta con solo 8 estudiantes y en caso de que se presentaran muchos
estudiantes colapsaría el sistema, por estas razones es de gran importancia crear un sistema
automatizado con diferentes funciones.

3.2 Objetivo general

Diseñar una aplicación automatizada para diferentes procesos en el departamento de


registro y control.

3.3 Objetivos específicos.


Incluir en la aplicación procesos donde se pueda inscribir al estudiante y registrar con todos
los datos personales básicos.

Automatizar el proceso de matrículas de los estudiantes.

Automatizar el proceso de registro de las calificaciones obtenidas por los estudiantes en los
diferentes cursos académicos.

3.4 Requisitos funcionales.

• El sistema debe registrar a un estudiante registrando sus datos personales básicos


(Nombre, Teléfono, Identificación, Dirección y teléfono y programa al cual está inscrito).

• El sistema debe permitir realizar consulta mediante identificación o Programa al cual


pertenece.

• El sistema debe permitir eliminar un estudiante de la base de datos de inscritos.

• El sistema debe permitir realizar consultas de número de inscritos a un determinado


programa, los programas son los siguientes: Ingeniería de sistemas, Ingeniería industrial,
Ingeniería electrónica y Administración de empresas.

•El sistema debe permitir solamente al tutor el ingreso de calificaciones de los cursos
matriculados por los Estudiantes: ingresar las calificaciones de los estudiantes en los cursos
matriculados. Esta acción debe contener 75% y 25%.

• La aplicación debe permitir realizar reportes sobre los estudiantes vinculados a un


programa, estudiantes activos en un programa académico determinado y listado de
calificaciones por curso académico.

• Al ejecutar la aplicación, esta debe solicitar Login y Password para garantizar la seguridad
de la aplicación y el acceso solo a personal autorizado.

• La aplicación no debe permitir los siguientes caracteres: $,%,&,/,*,/,-,ñ para la creación


del password.

•El sistema debe permitir el acceso solo sea al personal autorizado por la universidad.

3.5 No funcionales.

La aplicación debe visualizarse y funcionar correctamente en cualquier navegador,


especialmente en Internet Explorer, Google Crome y Mozilla.

El sistema debe cumplir con el Reglamento de medidas de seguridad.


El sistema debe contar con alto almacenamiento de la información.

La ejecución del sistema debe ser optimizado.

El sistema debe disponer de una documentación fácilmente actualizable que permita


realizar operaciones de mantenimiento con el menor esfuerzo posible.

Facilidades y controles para permitir el acceso a la información al personal autorizado a


través de Internet, con la intención de consultar y subir información pertinente para cada
una de ellas.
FUENTES BIBLIOGRAFICAS

https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=4
66:operadores-logicos-en-java-igual-distinto-and-or-not-mayor-menor-cortocircuito-
cu00634b&catid=68&Itemid=188

Modularidad (informática). (2017, 4 de agosto). Wikipedia, La enciclopedia libre. Fecha de


consulta: 01:59, febrero 14, 2018 desde
https://es.wikipedia.org/w/index.php?title=Modularidad_(inform%C3%A1tica)&oldid=100
930310.

Herencia (informática). (2018, 29 de enero). Wikipedia, La enciclopedia libre. Fecha de


consulta: 01:59, febrero 14, 2018 desde
https://es.wikipedia.org/w/index.php?title=Herencia_(inform%C3%A1tica)&oldid=105223
172

También podría gustarte