Está en la página 1de 8

REPÚBLICA BOLIVARIANA DE VENEZUELA

UNIVERSIDAD JOSÉ ANTONIO PÁEZ


FACULTAD DE INGENIERIA EN COMPUTACION
ALGORITMOS Y ESTRUCTURAS II

TIPOS DE DATOS
ABSTRACTOS

ESTUDIANTE:
Gisela Alonso
C.I: 28380263
PROFESOR:
John Muñoz

San diego, Agosto del 2022

TDA: Fracciones
-Mediante la ejecución de este tipo de dato abstracto podremos resolver fracciones con Java y
aplicar la suma, multiplicación (producto), división, potencia, inversa, simplificación, y
comparación.
A)Identificación de los objetos del mundo que se pretende modelar: propiedades, relaciones
y características relevantes:
-En el programa se crean 2 objetos, ambos de la clase Fracción.
El objeto en la realidad; Se considera como fracción a la representación de las partes de un todo,
es decir, se divide en partes iguales y cada parte es la fracción del entero.
Los términos de una fracción son el numerador y el denominador. El numerador es el número de
partes que tenemos y el denominador es el número de partes en que hemos dividido la
unidad.Por lo tanto, sus propiedades(atributos) serian el numerador y el denominador. Como
características podríamos mencionar sus comportamientos, ya que son una parte de un todo(una
porción) quiere decir que una fracción es una division, pero en muchos casos el resultado suele
ser decimal por lo que resulta mas factible trabajar en fracciones, y dependiendo los
requerimientos del usuario, si nos vamos un poco a la vida cotidiana, si hablamos de porciones es
mas fácil identificarlas mediante fracciones, por ejemplo a la hora de hacer recetas, en la mayoría
de los ingredientes la cantidad esta expresada en porciones. Como ¼ de taza de tal ingrediente.
Entre sus comportamientos dentro del programa para acercanos lo mas posibles a las operaciones
reales que realizan las fracciones podemos nombrar :
public Fraccion suma(Fraccion otra)
public Fraccion resta(Fraccion otra)
public Fraccion producto(Fraccion otra)
public Fraccion cociente(Fraccion otra)
public Fraccion inversa()
public Fraccion potencia(int exponente)
public Fraccion simplifica()
public Fraccion equivalencia(Fraccion otra)
B)Abstracción y encapsulamiento presente en el TDA:
-Se toman los elementos mas importantes del objeto, los mas relevantes como, sus atributos;
numerador y denominador, y los comportamientos característicos de este objeto(suma, resta,
division, multiplicación ,entre otros). Se encapsulan con modificadores de acceso(private en este
caso) los atributos antes nombrados de tal manera que solo se puedan modificar o consultar
mediante la misma clase o mediante los métodos getter y setter. Y algunos métodos como mcm y
mcd(ya que estos metodos no son de relevancia para el usuario, son métodos de apoyos para los
métodos de los comportamientos principales.
C) ESPECIFICACION DEL TDA
1-Especificación semi-formal:
TDA: Fracción
Valores: numerador, denominador
Operaciones: sumar, restar, producto, cociente, potencia, simplifica , inversa, equivalencia
Sumar=Realiza una adición entre las fracciones(en este caso compuestas por los atributos de los
objetos) mediante la formula matemática establecida
Restar=Resta de fracciones(atributos del objeto)
Cociente=Division entre facciones mediante la formula matemática(num*den/den*num)
Producto=Multiplicación entre las fracciones(num*num/den*den)
Inversa= cambia los valores de los parámetros del constructor y los muestra, para cambiar el
numerador por el denominador y el denominador por el numerador
Potencia: Eleva los componentes de la fracción a un numero que determina el usuario
Simplifica: Divide ambos competentes de la fracción por el máximo común divisor entre los 2
Equivalencia: Compara las fracciones para determinar si su valor es equivalente
Sintaxis:
Semántica:
2-Especificación formal
ESPECIFICACIÓN TDA FRACCION
TDA: FRACCION
Representación de las partes de un todo, es decir, se divide en partes iguales y cada parte es la
fracción del entero.

Invariante: denominador!=0
private int mcm(int a, int b)
private int maximoComunDivisor(int a, int b)
public Fraccion suma(Fraccion otra)
public Fraccion resta(Fraccion otra)
public Fraccion producto(Fraccion otra)
public Fraccion cociente(Fraccion otra)
public Fraccion inversa()
public Fraccion potencia(int exponente)
public Fraccion simplifica()
public Fraccion equivalencia(Fraccion otra)

private int mcm(int a, int b)


/*Calcula el mínimo común múltiplo entre los denominadores de las Fracciones*/
{Precondiciones: a=den1, b=den2}
{Postcondiciones: mcm=(a * b)/máximo común divisor(a , b)}
private int maximoComunDivisor(int a, int b)
/*Obtenemos el máximo comun dividor; obtenemos el residuo de dividir a entre b y lo guardamos
en b (pero guardando el valor de b en una variable temporal); en donde a es el primer número y b
el segundo (de los que queremos obtener el máximo común divisor) hasta que b sea cero */
{Precondiciones: a=num1, b=den1 }
{Postcondiciones: a=mcd}
public Fraccion suma(Fraccion otra)bo0ii
/* Se realiza la suma de las fracciones mediante una determinada formula matemática con apoyo
del método mcm*/
{Precondiciones: Fracción F y f2= new Fraccion( numerador= valor numerico,
denominador=valor numérico!=0)}
{Postcondiciones: Fracción F= new Fracción(nuevo numerador,nuevo denominador)}
public Fraccion resta(Fraccion otra)
/* Se realiza la resta de las fracciones mediante una determinada formula matemática con apoyo
del método mcm*/
{Precondiciones: Fracción F y f2= new Fraccion( numerador= valor numerico,
denominador=valor numérico!=0)}
{Postcondiciones: Fracción F= new Fracción(nuevo numerador,nuevo denominador)}
public Fraccion producto(Fraccion otra)
/* Se realiza multiplicación de numerador1 por numerador2 y denominador1 por denominador2
para retornar una nueva fracción producto*/
{Precondiciones: Fracción F y f2= new Fraccion( numerador= valor numerico,
denominador=valor numérico!=0)}
{Postcondiciones: Fracción F= new Fracción(nuevo numerador, nuevo denominador)}
public Fraccion cociente(Fraccion otra)
/* Se realiza multiplicación de numerador1 por denominador2 y numerador2 por denominador1
para retornar una nueva fracción */
{Precondiciones: Fracción F y f2= new Fraccion( numerador= valor numerico,
denominador=valor numérico!=0)}
{Postcondiciones: Fracción F= new Fracción(nuevo numerador,nuevo denominador)}
public Fraccion inversa()
/*Se invierte numerador por denominador y viceversa, mediante el cambio de los valores en los
parámetros que recibe el objeto según el constructor */
{Precondiciones: Fracción F = new Fraccion( numerador= valor numerico, denominador=valor
numérico!=0)}
{Postcondiciones: Fracción F= new Fracción(nuevo numerador,nuevo denominador)}
public Fraccion potencia(int exponente)
/*Eleva la fracción al exponente que ingrese el usuario mediante el apoyo de la clase math*/
{Precondiciones: Fracción F = new Fraccion( numerador= valor numerico, denominador=valor
numérico!=0)}
{Postcondiciones: Fracción F= new Fracción(nuevo numerador,nuevo denominador)}
public Fraccion simplifica()
/* Para simplificar obtendremos el mcd para poder dividir el numerador y el denominador
entre el numero mas grande posible pero en comun. El mcd lo obtenemos con el método
ayudante maximoComunDivisor(int a, int b) perteneciente a esta misma clase.
{Precondiciones: Fracción F = new Fraccion( numerador= valor numerico, denominador=valor
numérico!=0)}
{Postcondiciones: Fracción F= new Fracción(nuevo numerador,nuevo denominador)}
public Fraccion equivalencia(Fraccion otra)
/*Compara ambas fracciones para saber si son equivalentes entre si o no*/
{Precondiciones: Fracción F y f2= new Fraccion( numerador= valor numerico,
denominador=valor numérico!=0)}
{Postcondiciones: if f1 y f2 son proporcionales. Fracción F= new Fracción equivalente (nuevo
numerador,nuevo denominador)}
public String tipo(){
/*Compara el valor de los atributos del objeto para determinar mediante condiciones que
tipo de fracción es el objeto*/
{Precondiciones: Fracción F = new Fraccion( numerador= valor numerico, denominador=valor
numérico!=0)}
{Postcondiciones: Fracción=”su tipo” }

3- Operaciones constructoras del TAD (mínimo 2).


-Tenemos 4 metodos constructores
1- Constructor vacio por defecto, es decir, sin parámetros
Donde asignamos la unidad (1) como valor a los atributos del objeto.
2-Constructor con un solo parámetro(int numerador). Lo que quiere decir que de no recibir
denominador, asigna el valor recibido del numerador a tal atributo y asigna la unidad(1) al
denominador
3-Constructor con ambos parámetros(int numerador, int denominador) donde se asigna los
valores recibidos a tales atributos. Aquí se llama a un método getter para que valide el valor del
denominador según la condición para ser asigando. (denominador ¡=0) ya que ningún numero es
divisible entre 0. Entonces la fracción no seria valida.
4-Constructor copia, ya que recibe de parámetro un objeto ya instanciado con sus atributos, y son
estos valores ya almacenados los que se asigan. Hacemos uso en el método simplificar
4-Operaciones modificadores del TAD, teniendo en cuenta los cambios que debe permitir el
objeto abstracto (mínimo 6).
Ya que el Tda es una fracción, los cambio que permiten son realizar operaciones entre sus
objetos(fracciones) creados, o modificaciones a cada uno como simplificación, invertir, y elevar
a un numero ambos competentes de la fracción. Todos los métodos retornan la fracción
resultante de la operación realizada y estas son visualizadas por el usuario. Quienes tiene como
parametro “(fracción otra)” es por que trabajan con los atributos de this fraccion( la fraccion
almacenada primero) y la que recibe por parámetro es la del otro objeto con que se va a operar.
Los principales son los setters. Nos dan acceso a los atributos y nbos permiten modificar los
mismos. Ejemplo

- public Fraccion suma(Fraccion otra). /public Fraccion resta(Fraccion otra):


Calculamos el mcm entre los denominadores, este mcm sera nuestro denominador para la nueva
fraccion. Luego para calcular el numerador de la nueva fraccion, tomamos el mcm antes
calculado y lo dividmos entre el denominador inicial de cada una de las fracciones a operar, el
resultado de esta división de cada uno, lo multiplicamos por el numerador de su correspondiente
fracción y ambos resultados son sumados o restados según sea una suma o resta de fracciones,
esta suma o resta final será el numerador de la nueva fracción.
La diferencia de este método, con respecto al método:
((num1*den2)+(num2*den1))/den1*den2
es que el método que utilizamos en el programa nos da el resultado más simplificado, y a la hora
de trabajar con fracciones lo más idóneo es que estas estén lo más simplificadas posible
public Fraccion producto(Fraccion otra):
Se multiplican los denominadores para obtener el denominador final y se multiplican los
numeradores para obtener el numerador final.
public Fraccion cociente(Fraccion otra):
Retorna una nueva fracción que tiene como numerador el producto del numerador de una
fraccion por el denominador de la otra y como denominador el producto del denominador de la
primera por el numerador de la otra.
public Fraccion inversa()
No es un procedimiento mediante alguna formula matemática.
Lo que se hace es asignar en numerador que ya tenemos, como el nuevo denominador, y el
denominador que ya teníamos por el nuevo numerador.
public Fraccion potencia(int exponente):
El parámetro que recibe es el numero que se usara como exponente, este es ingresado por el
usuario y almacenado en una variable en la clase principal donde es llamado el metodo. El
procedimiento se realiza con el apoyo de la clase math con el metodo pow
public Fraccion simplifica():
Este método de apoya del método “MáximoComunDivisor”, ya que para simplificar es necesario
dividir ambas partes de la fraccion(numeracdor y denominador) por el numero mas grande
posible( la division debe ser entera) que tengan en común ambos. Una vez el método
“MáximoComunDivisor” retorna ese numero, entonces se divide ambas partes por este valor.

5-Operaciones analizadoras del TAD (mínimo 4).


1-public int getNumerador(){}
2-public int getDenominador() {}
3-Private int mcm(int a, int b){}
4-Private int MaximoComunDivisor(int a, int b){}
5-public String tipo(){}
6- public boolean equals(Object o){}

6-Operaciones que enriquezcan el TAD y le den mayor funcionalidad


- public boolean equals(Object o) {}
Esta compara los atributos del objeto para indicar si son iguales(retornando true), o si son
diferentes(false).
public Fraccion equivalencia(Fraccion otra) {}
Realiza las divisiones de dichas fracciones(numerador 1 entre denominador1) y lo mismo con la
otra y las compara. Esto es para saber si las fracciones son equivalentes. Las fracciones
equivalentes son aquellas fracciones que representan la misma cantidad aunque el numerador y
el denominador sean diferentes. Luego se apoya del metodo simplificar para mostrar cual es la
proporción equivalente entre ambas fracciones.
public String tipo(){
Compara los valores de los componentes de la fracción para mediante ciertas condiciones
determinar que tipo de fracción es, “Propia” cuando el numerador es menor que el denominador
o “Impropia” cuando el numerador es mayor que el demnominador.

7-Manejo de persistencia, según los requerimientos del objeto abstracto.


-
8-Estructuras de datos que permitan establecer la representación del objeto.
-
9-Manejo de Error del TDA.

También podría gustarte