0% found this document useful (0 votes)
63 views

Raport: Lucrarea de Laborator nr.4

This document describes a lab report on polymorphism in Java. The lab report details: 1. Creating new classes and methods to demonstrate different forms of polymorphism. 2. Developing an interface to allow for input and output of fractions and complex fractions. 3. Calculating fraction and complex fraction results, including optional rounding, by overriding methods in subclasses. The program allows the user to enter fraction and complex fraction components and displays the results. Polymorphism is implemented through subclasses that override methods to perform type-specific calculations.

Uploaded by

ion
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views

Raport: Lucrarea de Laborator nr.4

This document describes a lab report on polymorphism in Java. The lab report details: 1. Creating new classes and methods to demonstrate different forms of polymorphism. 2. Developing an interface to allow for input and output of fractions and complex fractions. 3. Calculating fraction and complex fraction results, including optional rounding, by overriding methods in subclasses. The program allows the user to enter fraction and complex fraction components and displays the results. Polymorphism is implemented through subclasses that override methods to perform type-specific calculations.

Uploaded by

ion
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

4 Ministerul Educației al Republicii Moldova

Universitatea Tehnică a Moldovei

Facultatea Calculatoare, Informatică şi Microelectronică

Departamentul Ingineria Software şi Automatică

Raport
Lucrarea de laborator nr.4
Disciplina: Tehnici avansate de programare

A efectuat: st. gr. CR-181


Patras Cristi

A verificat Petic Mircea

Chișinău - 2020

1. Tema lucrării:
Polimorfizmul

2. Scopul lucrării:

⮚ Însuşirea modalităţilor de realizare a polimorfizmului în Java;

3. Etapele de realizare:

1. Crearea clase noi;


2. Crearea metodelor necesare;
3. Realizarea formelor de polimorfizm;
4. Crearea interfeţii programului;
5. Prezentarea lucrării.

Sarcina:

Realizarea polimorfismului pentru clasele date cu crearea metodelor conform specificului claselor.

Fraction ComplexFracion.

Codul programului:

Clasa Lab4.java:
public class Lab4
{

public static void main(String[] args)


{
UI ui = new UI();
}
}

Clasa UI.java:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class UI implements ActionListener


{
JFrame frame;

JTextField complexNumarator1TF = new JTextField(3);


JTextField complexNumarator2TF = new JTextField(3);
JTextField complexNumitor1TF = new JTextField(3);
JTextField complexNumitor2TF = new JTextField(3);
JTextField numitorTF = new JTextField(3);
JTextField numaratorTF = new JTextField(3);

JLabel resultLabel = new JLabel();


JLabel complexResultLabel = new JLabel();

JCheckBox roundedCheckbox;

Fraction fraction = new Fraction();


ComplexFraction complex = new ComplexFraction();

UI() {
createWindow();
}

private void createWindow()


{
frame = new JFrame("Fraction");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 150);

createTopPanel();
createSecondPanel();
createComplexFractionPanel();

frame.setVisible(true);
}

private void createSecondPanel()


{
JPanel panel = new JPanel();
JLabel label = new JLabel();
roundedCheckbox = new JCheckBox();

label.setText("Rounded: ");
roundedCheckbox.addActionListener(this);
roundedCheckbox.setSelected(false);

panel.add(label);
panel.add(roundedCheckbox);
frame.add(panel, BorderLayout.NORTH);
}

private void createComplexFractionPanel()


{
JPanel panel = new JPanel();

complexNumarator1TF.addActionListener(this);
complexNumarator2TF.addActionListener(this);
complexNumitor1TF.addActionListener(this);
complexNumitor2TF.addActionListener(this);

panel.add(new JLabel("("));
panel.add(complexNumitor1TF);
panel.add(new JLabel(" / "));
panel.add(complexNumarator1TF);
panel.add(new JLabel(") / ("));
panel.add(complexNumitor2TF);
panel.add(new JLabel(" / "));
panel.add(complexNumarator2TF);
panel.add(new JLabel(") = "));
panel.add(complexResultLabel);

frame.add(panel, BorderLayout.CENTER);
}

private void createTopPanel()


{
JPanel panel = new JPanel();

numitorTF.addActionListener(this);
numaratorTF.addActionListener(this);

panel.add(numitorTF);
panel.add(new JLabel(" / "));
panel.add(numaratorTF);
panel.add(new JLabel(" = "));
panel.add(resultLabel);

frame.add(panel, BorderLayout.AFTER_LAST_LINE);
}

@Override
public void actionPerformed(ActionEvent arg0)
{
calculateResults();
}
//
// Calculation
//

private void calculateResults()


{
calculateFractionResults();
calculateComplexFractionResults();
}

private void calculateComplexFractionResults()


{
float numitor1 = Float.parseFloat(complexNumitor1TF.getText());
float numarator1 = Float.parseFloat(complexNumarator1TF.getText());
complex.setNumitor(new Fraction(numitor1, numarator1));

float numitor2 = Float.parseFloat(complexNumitor2TF.getText());


float numarator2 = Float.parseFloat(complexNumarator2TF.getText());
complex.setNumarator(new Fraction(numitor2, numarator2));

try {
float result = complex.getResult(roundedCheckbox.isSelected());
complexResultLabel.setText(String.valueOf(result));
}
catch(Exception e)
{
complexResultLabel.setText(e.getLocalizedMessage());
}
}
private void calculateFractionResults()
{
float numitor = Float.parseFloat(numitorTF.getText());
float numarator = Float.parseFloat(numaratorTF.getText());

fraction.setNumarator(numarator);
fraction.setNumitor(numitor);

try {
float result = fraction.getResult(roundedCheckbox.isSelected());
resultLabel.setText(String.valueOf(result));
}
catch(Exception e)
{
resultLabel.setText(e.getLocalizedMessage());
}
}
}

Clasa Fraction.java:

public class Fraction


{
private float numitor;
private float numarator;

Fraction(){}
Fraction(float a, float b) {
this.numitor = a;
this.numarator = b;
}

public void setNumitor(float a) {


this.numitor = a;
}

public void setNumarator(float a) {


this.numarator = a;
}

public float getResult() {


return numitor / numarator;
}

public float getResult(boolean rounded) {


return rounded ? Math.round(getResult()) : getResult();
}
}

Clasa ComplexFraction.java:

public class ComplexFraction


{
private Fraction numitor;
private Fraction numarator;

ComplexFraction(){}
ComplexFraction(Fraction numitor, Fraction numarator) {
this.numitor = numitor;
this.numarator = numarator;
}

public void setNumitor(Fraction f) {


this.numitor = f;
}

public void setNumarator(Fraction f) {


this.numarator = f;
}

public float getResult() {


return numitor.getResult() / numarator.getResult();
}

public float getResult(boolean rounded) {


return rounded ? Math.round(getResult()) : getResult();
}
}

Rezultatele obtinute:
In urma rularii programului obtinem asa o fereastra:

Pe primul rand putem sa putem bifa pentru a rotunji numere.


Pe al doilea rand putem calcula o fractie complexa de forma

Pe al treilea rand putem calcula o fractie simpla.

Concluzie:
În cadrul acestei lucrări de laborator am studiat cum lucreaza polimorfizmul in limbajul de programare
Java si am realizat un exemplu real. Deasemenea am creat un User Interface pentru a introduce si afisa datele.
Pentru aceasta am folosit bibliotecile standate din Java.

Bibliografie:
1. https://docs.oracle.com/javase/tutorial/
2. Cursul de TAP

You might also like