Skip to content

Latest commit

 

History

History
102 lines (71 loc) · 6.62 KB

README.md

File metadata and controls

102 lines (71 loc) · 6.62 KB

Среща 16 - Работа с пакети

💡 - Какво разгледахме днес

  • упражнение
  • класове и обекти
  • пакети и импортиране на пакети
  • ключовата дума this

📚 - Ресурси и материали

🕹️ - Задачи за упражнения

Класове и обекти

Нека да припомним - малко теория, която ще ни помогне в комуникацията от тук на сетне:

  • класовете - си представете, че са просто план - схема която описва концепция от заобикалящия ни свят. Концепцията съдържа характеристики (полета) и механизми за работа с тях (методи). Класовете ще наричаме често потребителски типове.
  • обекти - това е стойността на потребителски тип. По същия начин по който присвояваме числов литерал на променлива от тип int, на променлива от потребителски тип присвояваме обект.

Процеса по създаване на обект наричаме инстанциране на клас.

Пакети и импортиране на пакети

Програмите, които съставихме до момента - се характериризират с всичко друго но не и с обем. За добро или за лошо, този факт скоро ще се промени - което бързо ще доведе до безпрецедентен хаус и липса на организация в нашия код. Какви виждате, всички конструктивни елементи които въвеждаме в нашия, код имат за цел да подредят и организират кода, ни така че да минимизират хауса:

  • методи
  • класове

Време е да добавим още една обвивка, наречена пакет. Това в най-общи линии е папка, която съхранява класовете ни. Защо са ни тези пакети:

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

За да добавим клас към пакет, не е достатъчно само да го сложим в папката, трябва да добавим специална конструкция към него. Използваме ключовата дума package, след което добавяме името на пакета.

package types;

public class Event {

}

Името на пакета, автоматично се превръща в придатък към името на класа. Ако искаме да направим инстанция на класа Event в основния ни клас Application можем да подходим по два начина:

Използване на пълното название на класа и пакета

При този подход, добавяме името на пакета, преди името на класа, с помоща на оператора .

public class Application {
    public static void main(String[] args) {

        types.Event newEvent = new types.Event();
    }
}

Използване на конструкцията import

При този подход ползваме конструкцията import преди декларацията на всеки клас, като непосредствено след него, добавяме името на пакета и класа. След като импортираме класа, от пакета. Можем да използваме името на класа директно в нашия код.

Внимание имайте предвид:

  • конструкцията import, се изписва само и единствено в началото, на файла преди декларация на класа
  • конструкцията завършва с ;
import types.Event;

public class Application {
    public static void main(String[] args) {

        Event newEvent = new Event();
    }
}

Ключовата дума this

Вече сме наясно, че различаваме:

  • глобални променливи и методи - дефинирани с ключовата дума static
  • динамични методи, които са част от инстанционните променливи

Динамичните методи, се ползват при работа с данни - при които ключовата дума беше УНИКАЛНОСТ, разгледахме множество примери и идеи, къде можем да приложим този подход.

Когато искаме в рамките на метод, в даден клас изрично да укажем, че искаме да позваме метод или поле от същия, използваме ключовата дума this и оператора . с който все едно указваме - че поле или метод от този конкретен обект, се ползват в конкретната ситуация.

public class Event {
    private int id;
    private String title;
    private boolean isAdultOnly;

    public Event(String title, boolean isAdultOnly) {

        this.id          = 10;
        this.title       = title;
        this.isAdultOnly = isAdultOnly;
    }
}

В конкретния пример можем да си ползволим да ползваме идентификатори на променливи със същите имена както и полетата в класа, само и единствено с помоща на this.