Sunteți pe pagina 1din 6

1.

Să se creeze o clasă numită Complex, care are doi membri de tip int (real și
imaginary), care vor fi de tip private. Realizați următoarele subpuncte:
● să se creeze trei constructori: primul primește doi parametri de tip int (primul
desemnează partea reală a unui număr complex, al doilea partea imaginară), al
doilea nu primește niciun parametru și apelează primul constructor cu valorile 0 și 0,
iar al treilea reprezinta un copy constructor, care primește ca parametru un obiect de
tip Complex, care este copiat în obiectul this
● să se scrie metode de tip getter și setter (remember primul laborator - proprietăți),
prin care putem accesa membrii privați ai clasei
● să se scrie o metodă de tip void numită addWithComplex, care primește ca
parametru un obiect de tip Complex, prin care se adună numărul complex dat ca
parametru la numărul care apelează funcția (adică la this)
● să se scrie o metodă de tip void numita showNumber, prin care se afișează numărul
complex

2. Să se implementeze o clasă Point care să conțină:

● un constructor care să primească cele două numere reale (de tip float) ce reprezintă
coordonatele.
● o metodă changeCoords ce primește două numere reale și modifică cele două
coordonate ale punctului.
● o funcție de afișare a unui punct astfel: (x, y).

Să se implementeze o clasă Polygon cu următoarele:

● un constructor care preia ca parametru un singur număr n (reprezentând numărul de


colțuri al poligonului) și alocă spațiu pentru puncte (un punct reprezentând o instanță
a clasei Point).
● un constructor care preia ca parametru un vector, cu 2n numere reale reprezentând
colțurile. Acest constructor apelează constructorul de la punctul de mai sus și
completează vectorul de puncte cu cele n instanțe ale clasei Point obținute din
parametrii primiți.

La final, afișați coordonatele poligonului utilizând metodă de afișare a clasei Point.

3. Aveți un cod, care conține două greșeli legate de referințe. Rolul vostru este să
corectați aceste greșeli încât codul să aibă comportamentul dorit (există comentarii în
cod despre modul cum ar trebui să se comporte).

import java.util.*;
import java.io.*;

class Student {
private int id;
private String name, surname;

public Student (int id, String name, String surname) {


this.id = id;
this.name = name;
surname = surname
}

// copy constructor - se copiaza un obiect


public Student (Student st) {
this.id = st.id;
this.name = st.name;
this.surname = surname;
}

public int getId() {


return id;
}

public String getName() {


return name;
}

public String getSurname() {


return surname;
}

public void setId(int id) {


this.id = id;
}

public void setSurname(String surname) {


this.surname = surname;
}

public void setName(String name) {


this.name = name;
}

public void show () {


System.out.println(String.format("Name: %s\\nSurname: %s\\nStudent ID: %d\\n",
name, surname, id));
}

public class Main {


public static void main (String[] args) {
Student student1 = new Student (42, "Decebal", "Popescu");
/*
noi dorim sa facem o copie a obiectului student1, numita student2
apoi sa modificam copia respectiva
*/
Student student2 = student1;

student2.setName("Cezar");
student2.setSurname("Ghiu");

/*
trebuie sa afiseze
Name: Decebal
Surname: Popescu
Student ID: 42
*/
student1.show();

/*
trebuie sa afiseze
Name: Cezar
Surname: Ghiu
Student ID: 42
*/
student2.show();
}
}

4. În cod aveți definită clasa Book, în care trebuie să implementați metoda toString(), și
o clasă Main, în care se testează metoda toString() din Book

MAIN

import java.io.*;
import java.util.*;

public class Main {


public static void main(String[] args) {
Book b1 = new Book("Morometii", "Marin Preda", 1955);
System.out.println(b1);

Book b2 = new Book("Levantul", "Mircea Cărtărescu", 1990);


System.out.println(b2);
}
}

BOOK

import java.io.*;
import java.util.*;
public class Book {
private String title;
private String author;
private int year;

public Book(String title, String author, int year) {


this.title = title;
this.author = author;
this.year = year;
}

public String toString() {


// TODO
return null
}
}

Context pentru urmatoarele exercitii:

Gigel vrea să-i faca mamei sale un cadou de ziua ei și știe că-i plac foarte mult bomboanele.
El are nevoie de ajutorul vostru pentru a construi cel mai frumos și gustos cadou:

5.

Veti proiecta o clasa CandyBox, care va conține câmpurile private flavor (String) și origin
(String). Clasa va avea, de asemenea:

● un constructor fără parametri


● un constructor ce va inițializa toate campurile
● o metoda de tip float getVolume(), care va intoarce valoarea 0;
● Întrucât clasa Object se află în rădăcina arborelui de moștenire pentru orice clasă,
orice instanta va avea acces la o serie de facilități oferite de Object. Una dintre ele
este metoda toString(), al cărei scop este de a oferi o reprezentare unei instanțe sub
forma unui șir de caractere, utilizata in momentul apelului System.out.println().
Adaugati o metoda toString(), care va returna flavor-ul si regiunea de proveniență a
cutiei de bomboane.
6.

Gigel va vrea sa trimită prin curier cadoul, pentru a nu-l gasi mama lui mai devreme. Ajutați-l
să determine locația, creând clasa “Area”, care va conține un obiect de tip CandyBag, un
camp “number” (int) și un câmp “street” (String) Clasa va avea, de asemenea:

● un constructor fără parametri


● un constructor ce va inițializa toate campurile
● Acum ca am finalizat construcția, îi vom oferi mamei informații despre cadoul ei
printr-o felicitare. Creați o metoda getBirthdayCard(), care va afișa, pe primul rand,
adresa completă, iar apoi un mesaj de la multi ani.
7.

Să se implementeze o clasă PasswordMaker ce generează, folosind


RandomStringGenerator, o parolă pornind de la datele unei persoane. Această clasă o să
conțină următoarele:

● o constantă MAGIC_NUMBER având orice valoare doriți


● un String constant MAGIC_STRING, lung de minim 20 de caractere, generat random
● un constructor care primește: un String numit name
● o metodă getPassword() care va returna parola
○ parola se construiește concatenand următoarele șiruri:
■ un șir random de lungime MAGIC_NUMBER, generat cu
RandomStringGenerator și cu un alfabet obținut din 10 caractere
obținute random din MAGIC_STRING
■ și șirul format prin conversia la String a lungimii lui name + un numar
intreg generat random din intervalul [0,100]
8. Pornind de la poza alaturata, incearca sa implementezi o Interfata care extinde mai
multe interfete.

Solutie:

interfaceInstrument {

String what();

void adjust();
}

class WindInstrument implementsInstrument {

public void play() {


System.out.println("WindInstrument.play()");
}

publicString what() {
return "WindInstrument";
}

public void adjust() {


}
}

class Trumpet extends WindInstrument {

public void play() {


System.out.println("Trumpet.play()");
}
public void adjust() {
System.out.println("Trumpet.adjust()");
}
}

Un exemplu pentru o interfață care extinde mai multe interfețe:

interface A{
void a1();
void a2();
}

interface B {
int x = 0;
void b();
}

interface C extends A, B {
// this interface will expose// * all the methods declared in A and B (a1, a2 and b)// * all the
fields declared in A and B (x)}

9.

Implementaţi interfaţa Task în cele 3 moduri de mai jos.

● Un task care să afișeze un mesaj la output. Mesajul este specificat în constructor.


(OutTask.java)
● Un task care generează un număr aleator și afișează un mesaj cu numărul generat la
output. Generarea se face în constructor. (RandomOutTask.java)
● Un task care incrementează un contor global și afișează valoarea contorului după
fiecare incrementare (CounterOutTask.java).

10.

Extindeţi clasa AbstractTaskRunner (din pachetul fourth) în 3 moduri:

● PrintTimeTaskRunner - care afișează un mesaj după execuţia unui task în care se


specifică ora la care s-a executat task-ul (vedeți clasa Calendar).
● CounterTaskRunner - incrementează un contor local care ţine minte câte task-uri
s-au executat.
● RedoBackTaskRunner - salvează fiecare task executat într-un container în ordinea
inversă a execuţiei și are o metodă prin care se permite reexecutarea task-urilor.

S-ar putea să vă placă și