Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

Ministerul Educației, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică și Microelectronică

Raport la
Lucrarea de laborator Nr. 3
Disciplina: Programarea orientata pe obiecte

Tema: ” Polimorfismul si abstractizarea in JAVA”

Au efectuat: Botnaru Alexandru

A verificat: Vadim Eladii

Chișinău – 2020
Obiectivele lucrării:
1. Crearea unui proiect java.
2. Exemplu de polimorfism
3. Exemplu de abstractizare cu utilizarea de interfata
4. Exemplu de abstractizare cu utilizarea de class abstract
5. Adaugarea proiectului în GITHUB

Clasele create:

Abstract Class
public abstract class Employee {
private String name;
private String surname;
private int age;
private char sex;
private String function;
private double baseSalary;

public Employee(int age, char sex, String name, String surname,String function ) {
this.age = age;
this.sex = sex;
this.name = name;
this.surname = surname;
this.function = function;
this.baseSalary = 5000;
}

public int getAge() {


return age;
}

public void setAge(int age) {


this.age = age;
}
public char getSex() {
return sex;
}

public void setSex(char sex) {


this.sex = sex;
}

public String getName() {


return name;
}

public void setName(String name) {


this.name = name;
}

public String getSurname() {


return surname;
}

public void setSurname(String surname) {


this.surname = surname;
}

public String getFunction() {


return function;
}

public void setFunction(String function) {


this.function = function;
}

public double getBaseSalary() {


return baseSalary;
}

public void setBaseSalary(double baseSalary) {


this.baseSalary = baseSalary;
}

public void sayHello(String name){


System.out.println("Hello, I'm " + name);
}

public String printAll() {


return
"\nname : " + name + '\n' +
"surname : " + surname + '\n' +
"age : " + age + '\n' +
"function : " + function + '\n' +
"sex : " + sex + '\n';
}

abstract public void work();


abstract public double calculateSalary(double baseSalary);

Class extending Abstract Class


public class Programmer extends Employee {
private String codingLanguage;
private String level;

public Programmer(int age, char sex, String name, String surname, String function, String codingLanguage, String
level) {
super(age, sex, name, surname, function);
this.codingLanguage = codingLanguage;
this.level = level;
}

public String getCodingLanguage() {


return codingLanguage;
}

public void setCodingLanguage(String codingLanguage) {


this.codingLanguage = codingLanguage;
}

public String getLevel() {


return level;
}
public void setLevel(String level) {
this.level = level;
}

@Override
public void work() {
System.out.println("I'm Coding...");
}

@Override
public double calculateSalary(double baseSalary) {
return baseSalary+2500;
}

@Override
public String printAll() {
return
"\nname : " + getName() + '\n' +
"surname : " + getSurname() + '\n' +
"age : " + getAge() + '\n' +
"function : " + getFunction() + '\n' +
"codingLanguage : " + codingLanguage + '\n' +
"level : " + level + '\n' +
"salary : " + calculateSalary(getBaseSalary()) + '\n'
}
}
Interface
public interface Worker {

void sayHello(String name);


void work();
double calculateSalary(double baseSalary);
public String printAll();

Class implementing interface


public class Tester implements Worker {
private String name;
private String surname;
private int age;
private char sex;
private String function;
private double baseSalary;
private String typeOfTesting;
public Tester(String name, String surname, int age, char sex, String function,String typeOfTesting) {
this.name = name;
this.surname = surname;
this.age = age;
this.sex = sex;
this.function = function;
this.baseSalary = 5000;
this.typeOfTesting = typeOfTesting;
}

public String getName() {


return name;
}

public void setName(String name) {


this.name = name;
}

public String getSurname() {


return surname;
}

public void setSurname(String surname) {


this.surname = surname;
}

public int getAge() {


return age;
}

public void setAge(int age) {


this.age = age;
}

public char getSex() {


return sex;
}

public void setSex(char sex) {


this.sex = sex;
}

public String getFunction() {


return function;
}

public void setFunction(String function) {


this.function = function;
}

public double getBaseSalary() {


return baseSalary;
}

public void setBaseSalary(double baseSalary) {


this.baseSalary = baseSalary;
}

public String getTypeOfTesting() {


return typeOfTesting;
}

public void setTypeOfTesting(String typeOfTesting) {


this.typeOfTesting = typeOfTesting;
}

@Override
public void sayHello(String name) {
System.out.println("Hello,I'm " + name);
}

@Override
public void work() {
System.out.println("I'm testing apps...");
}

@Override
public double calculateSalary(double baseSalary) {
return baseSalary + 1500;
}

@Override
public String printAll() {
return
"\nname : " + name + '\n' +
"surname : " + surname + '\n' +
"age : " + age + '\n' +
"function : " + function + '\n' +
"sex : " + sex + '\n' +
"salary : " + calculateSalary(baseSalary) + '\n' +
"type of testing : " + typeOfTesting;
}
}

Class that will be inherited


public class PersonalData {
private String name;
private String surname;
private int age;
private char sex;
private String function;
private double baseSalary;

public PersonalData(int age, char sex, String name, String surname, String function) {
this.age = age;
this.sex = sex;
this.name = name;
this.surname = surname;
this.function = function;
this.baseSalary = 5000;
}

public int getAge() {


return age;
}

public void setAge(int age) {


this.age = age;
}

public char getSex() {


return sex;
}

public void setSex(char sex) {


this.sex = sex;
}

public String getName() {


return name;
}

public void setName(String name) {


this.name = name;
}

public String getSurname() {


return surname;
}

public void setSurname(String surname) {


this.surname = surname;
}

public String getFunction() {


return function;
}

public void setFunction(String function) {


this.function = function;
}

public double getBaseSalary() {


return baseSalary;
}

public void setBaseSalary(double baseSalary) {


this.baseSalary = baseSalary;
}
}

Class that extends an other Class and implements an Interface


public class Designer extends PersonalData implements Worker {
private String type;

public Designer(int age, char sex, String name, String surname, String function,String type) {
super(age, sex, name, surname, function);
this.type = type;
}

public String getType() {


return type;
}

public void setType(String type) {


this.type = type;
}

@Override
public void work() {
System.out.println("I'm drawing...");
}

@Override
public double calculateSalary(double baseSalary) {
return baseSalary + 1200;
}

@Override
public String printAll() {
return
"\nname : " + getName()+ '\n' +
"surname : " + getSurname() + '\n' +
"age : " + getAge() + '\n' +
"function : " + getFunction() + '\n' +
"sex : " + getSex() + '\n' +
"type : " + type + '\n';
}
public void sayHello(String name){
System.out.println("Hello, I'm " + getName());
}
}

Main:
public class Main {

public static void main(String[] args) {


//polymorphism using abstract class
Programmer programmer1 = new Programmer(25,'M',"Alex","Botnaru","programmer","Java","Junior" );
programmer1.sayHello(programmer1.getName());
System.out.println("My salary is : "+ programmer1.calculateSalary(programmer1.getBaseSalary()));
programmer1.work();
System.out.println(programmer1.printAll());
System.out.println("----------------------------------------");

//polymorphism using interface


Tester tester1 = new Tester("Ion","Osipciuc",24,'M',"tester ","automated ");
tester1.sayHello(tester1.getName());
System.out.println("My salary is : " + tester1.calculateSalary((tester1.getBaseSalary())));
tester1.work();
System.out.println(tester1.printAll());
System.out.println("----------------------------------------");

//using interface and abstract class


Designer designer1 = new Designer(22,'F',"Ana-Maria","Alcaza","designer","UI");
designer1.sayHello(designer1.getName());
System.out.println("My salary is : "+ designer1.calculateSalary(designer1.getBaseSalary()));
designer1.work();
System.out.println(designer1.printAll());
}
}

Result:
Hello, I'm Alex

My salary is : 7500.0

I'm Coding...

name : Alex

surname : Botnaru

age : 25
function : programmer

codingLanguage : Java

level : Junior

salary : 7500.0

----------------------------------------

Hello,I'm Ion

My salary is : 6500.0

I'm testing apps...

name : Ion

surname : Osipciuc

age : 24

function : tester

sex : M

salary : 6500.0

type of testing : automated

----------------------------------------

Hello, I'm Ana-Maria

My salary is : 6200.0

I'm drawing...

name : Ana-Maria

surname : Alcaza

age : 22

function : designer

sex : F

type : UI
Concluzie:
Efectuand aceasta lucrare de laborator, am studiat in special 2 principii ale
OOP: polimorfismul si abstractizarea, utilizand limbajul de programare JAVA.
Pentru aceasta a trebuit sa efectuam un exemplu de polimorfism, unul de
abstractizare utilizind interfata si altul utilizaind clasa abstracta.
In urma efectuarii am inteles esenta acestor principii si ca
abstractizarea nu poate exista fara de polimorfism.De asemenea am insusit
diferentele si asemanarile dintre interfata si o clasa abstracta si diferentele dintre
method overridind si method overloading.

You might also like