Упражнения за извънаудиторна заетост

Задачите са подредени по нарастваща сложност. В първите задачи са зададени конкретни имена на класове, полета и методи. В следващите задачи част от решенията трябва да бъдат избрани самостоятелно.

Задача 1

Да се дефинира клас Cat, който описва котка.

Класът трябва да съдържа следните полета:

  • name от тип String;
  • breed от тип String;
  • age от тип int;
  • weight от тип double.

За всяко поле трябва да се дефинират методи за четене и промяна на стойността:

  • getName() и setName(String name);
  • getBreed() и setBreed(String breed);
  • getAge() и setAge(int age);
  • getWeight() и setWeight(double weight).

Да се създаде клас Application с метод main. В него да се създаде обект от класа Cat, да се зададат стойности чрез set методите и да се отпечатат стойностите чрез get методите.

Пример за използване:

Cat cat = new Cat();

cat.setName("Maya");
cat.setBreed("Persian");
cat.setAge(3);
cat.setWeight(4.2);

System.out.println(cat.getName());
System.out.println(cat.getBreed());
System.out.println(cat.getAge());
System.out.println(cat.getWeight());

Задача 2

Да се дефинира клас Room, който описва стая.

Класът трябва да съдържа следните полета:

  • number от тип String;
  • length от тип double;
  • width от тип double;
  • height от тип double.

Обектите от класа Room трябва да се инициализират чрез параметризиран конструктор:

Room(String number, double length, double width, double height)

Да се дефинират само методи за четене:

  • getNumber();
  • getLength();
  • getWidth();
  • getHeight().

Не трябва да се дефинират методи за промяна на стойностите. Така стойностите се задават при създаване на обекта и след това се четат чрез методи.

Да се създадат два обекта от класа Room и да се отпечатат данните за всяка стая.

Пример за създаване на обект:

Room room = new Room("A101", 6.0, 4.0, 3.0);

Задача 3

Да се разшири решението от задача 2 или да се дефинира нов клас Room, който освен полетата от задача 2 съдържа и методи за изчисления.

Да се реализират следните методи:

  • calculateArea(), който връща площта на пода;
  • calculateVolume(), който връща обема на стаята;
  • getDescription(), който връща текстово описание на стаята.

Площта на пода се изчислява чрез length * width. Обемът се изчислява чрез length * width * height.

Пример за очаквано използване:

Room room = new Room("B202", 5.0, 4.0, 2.8);

System.out.println(room.calculateArea());
System.out.println(room.calculateVolume());
System.out.println(room.getDescription());

Методът getDescription() трябва да върне текст, който съдържа номера на стаята, площта и обема.

Задача 4

Да се дефинира клас House, който описва къща.

Класът трябва да съдържа поне следните полета:

  • address от тип String;
  • floors от тип int;
  • area от тип double;
  • hasGarage от тип boolean.

Обектите трябва да се инициализират чрез параметризиран конструктор. Да се дефинират методи за четене на стойностите.

Да се реализират и следните методи:

  • getDescription(), който връща текстово описание на къщата;
  • isLargerThan(House other), който връща true, ако текущата къща има по-голяма площ от подадената къща;
  • hasMoreFloorsThan(House other), който връща true, ако текущата къща има повече етажи от подадената къща.

Да се създадат поне два обекта от класа House. Да се отпечатат описанията им и да се сравнят по площ и брой етажи.

Задача 5

Да се дефинира клас Student, който описва студент.

Класът трябва да съдържа:

  • нестатично поле name от тип String;
  • нестатично поле facultyNumber от тип int;
  • статично поле university от тип String.

Да се дефинира параметризиран конструктор:

Student(String name, int facultyNumber)

Да се дефинира метод getInformation(), който връща текст с името, факултетния номер и университета.

Да се създадат поне три обекта от класа Student. Да се отпечатат данните за тях чрез getInformation(). След това да се промени стойността на статичното поле university чрез името на класа и отново да се отпечатат данните.

Пример:

Student.university = "Technical University of Varna";

Целта е да се покаже, че статичното поле принадлежи на класа и е общо за всички обекти.

Задача 6

Да се дефинира record с име Book, който съхранява данни за книга.

Записът трябва да съдържа следните компоненти:

  • title от тип String;
  • author от тип String;
  • year от тип int;
  • price от тип double.

Да се създадат поне два обекта от тип Book. Да се използват автоматично генерираните методи:

  • title();
  • author();
  • year();
  • price();
  • toString();
  • equals(Object other).

Да се провери какъв е резултатът от equals(), когато две книги имат еднакви стойности, и когато поне една стойност е различна.

Да се добави проверка в компактен конструктор, която не позволява създаване на книга с отрицателна цена.

Задача 7

Да се дефинира enum с име OrderStatus, който описва статус на поръчка.

Изброеният тип трябва да съдържа поне следните стойности:

  • NEW;
  • PAID;
  • SHIPPED;
  • DELIVERED;
  • CANCELLED.

Да се дефинира клас Order, който описва поръчка. Задължително трябва да има поле за статус от тип OrderStatus. Останалите полета трябва да бъдат избрани самостоятелно според това какви данни са необходими за една поръчка.

Класът Order трябва да съдържа:

  • параметризиран конструктор;
  • методи за четене на полетата;
  • метод getDescription(), който връща текстово описание на поръчката;
  • метод changeStatus(OrderStatus status), който променя текущия статус на поръчката.

Да се създадат няколко поръчки с различни статуси. Да се използват условни оператори за проверка дали дадена поръчка е доставена, отказана или все още се обработва.

Задача 8

Да се дефинира клас по избор, който описва реален обект от учебна, търговска или битова система. Примери за възможни класове са Course, Product, Vehicle, BankAccount или HotelReservation.

За избрания клас трябва самостоятелно да се определят:

  • име на класа;
  • поне четири полета с подходящи типове;
  • кои стойности трябва да се задават чрез конструктор;
  • кои методи за четене са необходими;
  • дали са необходими методи за промяна;
  • поне два метода, които извършват изчисление, проверка или връщат текстово описание.

Да се използва поне една от ключовите думи this или static по смислен начин.

Да се създаде примерна програма, която създава поне три обекта от избрания клас и демонстрира всички дефинирани методи.


This site uses Just the Docs, a documentation theme for Jekyll.