1. Studiati codul SprinklerSystem.java ce prezinta refolosirea claselor prin compozitie. Observati metoda toString ce permite convertirea obiectelor in String-uri. Studiati codul Bath.java ce prezinta initializarea datelor in cazul compozitiei. 2. Studiati codul Detergent.java ce prezinta mostenirea ca metoda de refolosire a claselor. 3. Studiati codurile Cartoon.java si Chess.java ce prezinta apelarea constructorilor in cazul mostenirii. 4. Creati doua clase A si B, cu constructori impliciti (fara argumente) ce afiseaza un mesaj. Creati o clasa C ce mosteneste clasa A si are o data membra (field) de tip B. Creati un obiect de tip C si observati rezultatele. 5. Modificati exercitiul 4 astfel incat clasele A si B sa aiba contructori cu argumente in locul celor impliciti. Scrieti un contructor si pentru clasa C si efectuati initilizarea datelor membre in acesta. 6. Creati o clasa ce mosteneste clasa Detergent. Supraincarcati metoda scrub() si adaugati o noua metoda sterilize(). 7. Modificati codul Cartoon.java: eliminati codul ce descrie constructorul. Faceti acelasi lucru si pentru Chess.java. Explicati ce se intampla. 8. In Car.java adaugati metoda service() pentru clasa Engine si apelati-o in metoda main. 9. Creati o clasa care sa contina o metoda protected intr-un pachet. In afara pachetului incercati sa apelati metoda protected. Apoi creati o clasa ce mosteneste prima clasa si incercati sa apelati metoda protected din interiorul unei metode a noii clase. Explicati rezultatele. com.bruceeckel.tools; public class P { public static void rint(String s) { System.out.print(s); } public static void rintln(String s) { System.out.println(s); } } ///:~ = y);