Клас
Клас в ООП наричаме описание на даден клас обекти от заобикалящия ни свят. Класът представлява шаблон, който описва видовете състояния и поведението на конкретните обекти, които биват създавани от този клас. Класовете често представят обширни категории, които споделят общи характеристики.
Класът в ООП дефинира нов тип данни.Те дефинират какви атрибути ще имат инстанциите от този тип, но не и стойностите на тези атрибути за определен обект. Класовете могат да съдържат също функции, които се наричат методи и са достъпни само за обекти от този тип. Тези методи се дефинират в класа и извършват действие.
Декларацията на клас включва:
- Декларация на класа (class) - започва със запазената дума class.
- Идентификатор на класа - Името трябва да започва с главнa букви; когато името е повече от една дума, то те се записват слято.
- Тяло - по подобие на методите, класовете също имат част, която следва декларацията им, оградена с фигурни скоби – “{” и “}”, между които се намира съдържанието на класа.
class Dog {
// Тяло на класа
}
Свойства (атрибути)
Атрибутитe са променливи, които осигуряват състоянието на класа и неговите обекти, и се използват в методи. Също се наричат член-променливи.
class Dog {
// Полета на класа
String name;
String breed;
int age;
String color;
}
Конструктор
Конструкторите се използват за инициализиране на нови обекти.
Представлява специален вид метод, с който се инициализират нови обекти от този клас. Конструкторът се извиква, когато се създава нов обект от този клас.
Изисквания към конструктора:
- Името му да съвпада с името на класа;
- Няма тип на връщания резултат;
- Може да приема аргументи, може и да не приема.
Видове конструктори:
Конструктор по подразбиране - не приема параметри; инициализира член-променливите със стойности по подразбиране. В един клас може да има само един конструктор по подразбиране.
class Dog {
// Полета на класа
String name;
String breed;
int age;
String color;
// Конструктор за деклариране на клас
public Dog() {
this.name = "Брзименно";
this.breed = "куче";
this.age = 0;
this.color = "черно";
}
}
Параметризиран конструктор - приема параметри и инициализира член-променливите с определени стойности. В един клас може да има повече от един параметризиран конструктор.
class Dog {
// Полета на класа
String name;
String breed;
int age;
String color;
// Конструктор за деклариране на клас
public Dog(String name, String breed, int age, String color) {
this.name = name;
this.breed = breed;
this.age = age;
this.color = color;
}
}
Ако изрично не напишем конструктор Java си създава по подразбиране конструктор за всеки клас – той е без параметри(default constructor). Ако създадем какъвто и да е друг конструктор, то този по подразбиране вече не съществува!
Поведение (Методи)
Методите дефинират поведението на класа и неговите обекти
- Методи за достъп - служат за достъп до полетата на класа
- метод за четене – getter: Този метод връща стойността на конкретния атрибут
class Dog {
// Полета на класа
String name;
String breed;
int age;
String color;
// Конструктор за деклариране на клас
public Dog(String name, String breed, int age, String color) {
this.name = name;
this.breed = breed;
this.age = age;
this.color = color;
}
// метод за извличане стойноста на променливата name
public String getName() {
return name;
}
// метод за извличане стойноста на променливата breed
public String getBreed(){
return breed;
}
// метод за извличане стойноста на променливата age
public int getAge() {
return age;
}
// метод за извличане стойноста на променливата color
public String getColor() {
return color;
}
}
- метод за запис – setter: променя стойността на даден атрибут чрез параметър.
class Dog {
// Полета на класа
String name;
String breed;
int age;
String color;
// Конструктор за деклариране на клас
public Dog(String name, String breed, int age, String color) {
this.name = name;
this.breed = breed;
this.age = age;
this.color = color;
}
// метод за присвояване на стойност на променливата name
public void setName(String name) {
this.name = name;
}
// метод за присвояване на стойност на променливата breed
public void setBreed(String breed) {
this.breed = breed;
}
// метод за присвояване на стойност на променливата age
public void setAge(int age) {
this.age = age;
}
// метод за присвояване на стойност на променливата color
public void setColor(String color) {
this.color = color;
}
}
Метода toString()
Ако искаме да представим, обект като текст използваме метода toString(), той връща текстова интерпретация на обекта. Чрез пренаписване на метода toString() получаваме исканата имплементация.
public String toString() {
return ("Моето име е "+ this.getName()+
".\nМоята порода, години и цвят са " +
this.getBreed()+"," + this.getAge()+
","+ this.getColor());
}
- equals - метода е стандартен метод в Java и обектно-ориентираната парадигма. Той служи за сравняване стойностите на обектите от дефиницията на класа
public boolean equals(Object o) {
if (this == o) return true;
Dog dog = (Dog) o;
return breed.equals(dog.breed);
}
####