Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo:laboratoare:04 [2018/08/21 13:29]
mihai.nan
poo:laboratoare:04 [2019/10/15 13:18] (current)
mihai.nan
Line 21: Line 21:
 </​code>​ </​code>​
  
 +<code Java>
 +class Patrulater {
 +    public int latura1, latura2, latura3, latura4;
 +    public double unghi1, unghi2, unghi3, unghi4;
 +
 +    public Patrulater() {
 +        this(0, 0, 0, 0);
 +    }
 +
 +    public Patrulater(int latura1, int latura2, int latura3, int latura4) {
 +        this.latura1 = latura1;
 +        this.latura2 = latura2;
 +        this.latura3 = latura3;
 +        this.latura4 = latura4;
 +    }
 +
 +    public Patrulater(double unghi1, double unghi2, double unghi3, double unghi4) {
 +        this(0, 0, 0, 0, unghi1, unghi2, unghi3, unghi4);
 +    }
 +
 +    public Patrulater(int latura1, int latura2, int latura3, int latura4,
 +                      double unghi1, double unghi2, double unghi3, double unghi4) {
 +        this(latura1,​ latura2, latura3, latura4);
 +        this.unghi1 = unghi1;
 +        this.unghi2 = unghi2;
 +        this.unghi3 = unghi3;
 +        this.unghi4 = unghi4;
 +    }
 +
 +    public int perimetru() {
 +        int result;
 +        result = latura1 + latura2 + latura3 + latura4;
 +        return result;
 +    }
 +}
 +</​code>​
  
 === Problema 2 === === Problema 2 ===
Line 31: Line 67:
 Ambele clase vor utiliza metodele puse la dispozitie in clasa **//​Array//​**,​ in forma originala sau intr-o forma modificata, iar clasa **//​MyStack//​** trebuie sa ofere metodele **//​push//​** si **//​pop//​**,​ specifice acestei structuri de date. Metoda **//​push//​** va oferi posibilitatea introducerii unui numar intreg in varful stivei, in timp ce metoda **//pop//** va inlatura elementul din varful stivei si il va intoarce. Ambele clase vor utiliza metodele puse la dispozitie in clasa **//​Array//​**,​ in forma originala sau intr-o forma modificata, iar clasa **//​MyStack//​** trebuie sa ofere metodele **//​push//​** si **//​pop//​**,​ specifice acestei structuri de date. Metoda **//​push//​** va oferi posibilitatea introducerii unui numar intreg in varful stivei, in timp ce metoda **//pop//** va inlatura elementul din varful stivei si il va intoarce.
  
-Creati o clasa ce contine un main pentru testarea claselor implementate.+<code java> 
 +public class Array { 
 +    //Vectorul in care se vor retine elementele 
 +    private Vector vector;
  
 +    //​Constructor clasei
 +    public Array() {
 +        //​Instantierea vectorului cu elemente
 +        vector = new Vector();
 +    }
 +
 +    //Metoda care adauga un element in vector, folosind pozitia curenta
 +    public void addElement(Integer x) {
 +        vector.add(x);​
 +    }
 +
 +    //Metoda care adauga un element in vector, tinand cont de pozitia indicata
 +    public void addElement(Integer x, int poz) {
 +        if(poz >= 0 && poz <= vector.size()) {
 +            vector.add(poz,​ x);
 +        }
 +    }
 +
 +    //Metoda care returneaza elementul aflat in vector la pozitia indicata
 +    public int get(int poz) {
 +        int result;
 +        if(poz >= 0 && poz < vector.size()) {
 +            result = (int) vector.get(poz);​
 +            return result;
 +        } else {
 +            return Integer.MIN_VALUE;​
 +        }
 +    }
 +
 +    //Metoda ce intoarce numarul de elemente din vector
 +    public int getSize() {
 +        return vector.size();​
 +    }
 +
 +    //Metoda pentru stergerea unui element din vector
 +    public boolean remove(Integer x) {
 +        return vector.remove(x);​
 +    }
 +
 +    //Metoda pentru stergerea elementului de pe pozitia pos din vector
 +    public Integer remove(int pos) {
 +        return (Integer) vector.remove(pos);​
 +    }
 +
 +    //Metoda uzitata pentru afisarea unui obiect de tip Array
 +    public String toString() {
 +        String result = "​{";​
 +        for(int i = 0; i < vector.size();​ i++) {
 +            result += get(i) + ", ";
 +        }
 +        result += "​}";​
 +        return result;
 +    }
 +
 +    public void sort() {
 +        Collections.sort(vector);​
 +    }
 +}
 +</​code>​
 +
 +Creati o clasa ce contine un main pentru testarea claselor implementate.
  
 <note tip> <note tip>
Line 39: Line 139:
 </​code>​ </​code>​
 </​note>​ </​note>​
 +
 +
  
 === Problema 3 === === Problema 3 ===
 Sa se implementeze o clasa **//​HSet//​** care modeleaza o multime realizata ca tabel de dispersie. Clasa este derivata din [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Hashtable.html|Hashtable]] si contine metodele: //​**add**//,​ //​**remove**//,​ //​**toString**//​. ​ Sa se implementeze o clasa **//​HSet//​** care modeleaza o multime realizata ca tabel de dispersie. Clasa este derivata din [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Hashtable.html|Hashtable]] si contine metodele: //​**add**//,​ //​**remove**//,​ //​**toString**//​. ​
  
-Cheia si valoarea vor fi egale (cheile sunt elementele multimii). Pentru testare, folositi clasa //​**Test3**// ​din arhiva laboratorului.+Cheia si valoarea vor fi egale (cheile sunt elementele multimii). Pentru testare, folositi clasa //​**Test3**//​.
  
 <code java> <code java>
Line 56: Line 158:
 Se vor supradefini doar metodele care necesita acest lucru! Se vor supradefini doar metodele care necesita acest lucru!
 </​note>​ </​note>​
 +
 +<code java>
 +class Test3 {
 +    public static void main(String args[]) {
 +        HSet set = new HSet();
 +        set.add("​Laborator"​);​
 +        set.add("​Agregare"​);​
 +        set.add("​Mostenire"​);​
 +        System.out.println(set);​
 +        System.out.println(set.size());​
 +        set.add("​Laborator"​);​
 +        if(set.size() == 4) {
 +            System.out.println("​Multimea nu trebuie sa contina duplicate!"​);​
 +        }
 +        System.out.println(set.remove("​POO"​));​
 +        System.out.println(set.remove("​Laborator"​));​
 +        if(set.size() != 2) {
 +            System.out.println("​Stergerea nu functioneaza!"​);​
 +        }
 +        set.add("​Supradefinire"​);​
 +        set.add("​Supraincarcare"​);​
 +        System.out.println(set);​
 +    }
 +}
 +</​code>​
 +
  
 === Problema 4 === === Problema 4 ===
Line 65: Line 193:
  
  
-Pentru testare, se poate folosi clasa //​**Test04**// ​din arhiva laboratorului. Metoda //​**addCourse**//​ din clasa //​**Teacher**//​ verifica daca a fost deja asignat cursul respectiv profesorului si intoarce //​**true**//​ doar daca acesta nu exista si a fost adaugat. De asemenea, metoda //​**removeCourse**//​ intoarce //​**true**//​ doar daca profesorul avea asignat cursul respectiv si s-a putut realiza stergerea.+Pentru testare, se poate folosi clasa //​**Test04**//​. ​ 
 +Metoda //​**addCourse**//​ din clasa //​**Teacher**//​ verifica daca a fost deja asignat cursul respectiv profesorului si intoarce //​**true**//​ doar daca acesta nu exista si a fost adaugat. De asemenea, metoda //​**removeCourse**//​ intoarce //​**true**//​ doar daca profesorul avea asignat cursul respectiv si s-a putut realiza stergerea.
  
 <note warning> <note warning>
-Atentie la modul in care va definiti constructorii claselor copil (Student si Teacher)!+Atentie la modul in care va definiti constructorii claselor copil (//**Student**// si //**Teacher**//)!
 </​note>​ </​note>​
  
 <note tip><​code java>​super</​code></​note>​ <note tip><​code java>​super</​code></​note>​
 +
 +<code java>
 +class Test4 {
 +    public static void main(String args[]) {
 +        Person student, teacher, person;
 +        student = new Student("​Popescu Ion", "​Bucuresti"​);​
 +        teacher = new Teacher("​Ionescu Gigel",​ "​Bucuresti"​);​
 +        person = new Person("​Maria",​ "​Iasi"​);​
 +        assert (person.getName().equals("​Maria"​)) : "​Metoda getName din clasa Person nu este implementata corect";​
 +        assert (((Teacher) teacher).addCourse("​Programare"​)) : "​Metoda addCourse din clasa Teacher nu este " +
 +                "​implementata corect";​
 +        assert (((Teacher) teacher).addCourse("​Algoritmica"​)) : "​Metoda addCourse din clasa Teacher nu este " +
 +                "​implementata corect";​
 +        assert (((Teacher) teacher).addCourse("​Matematica"​)) : "​Metoda addCourse din clasa Teacher nu este " +
 +                "​implementata corect";​
 +        assert (!((Teacher) teacher).addCourse("​Programare"​)) : "​Metoda addCourse din clasa Teacher nu este " +
 +                "​implementata corect";​
 +        assert (((Teacher) teacher).removeCourse("​Programare"​)) : "​Metoda addCourse din clasa Teacher nu este " +
 +                "​implementata corect";​
 +        assert (!((Teacher) teacher).addCourse("​Programare"​)) : "​Metoda addCourse din clasa Teacher nu este " +
 +                "​implementata corect";​
 +        ((Student) student).addCourseGrade("​Programare",​ 10);
 +        ((Student) student).addCourseGrade("​Algoritmica",​ 9);
 +        ((Student) student).addCourseGrade("​Matematica",​ 8);
 +        assert (Math.abs(((Student) student).getAverageGrade() - 9.00) <= 0.001) : "​Metoda getAverageGrade din clasa " +
 +                "​Student nu a fost implementat corect";​
 +        ((Student) student).printGrades();​
 +        //Ce metoda toString se va apela? Din ce clasa?
 +        System.out.println(student);​
 +        System.out.println(person);​
 +        System.out.println("​Felicitari! Problema a fost rezolvata corect!"​);​
 +    }
 +}
 +</​code>​
  
poo/laboratoare/04.1534847360.txt.gz · Last modified: 2018/08/21 13:29 by mihai.nan
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0