ООП – класове и обекти, капсулация, конструктори
1. Предимства на ООП
а) Позволява моделиране на реални обекти от света
б) Много хора работят съвместно по 1 проект
в) По-лесна разработка и поддръжка на проект
2. Клас
А) определение – съвкупност от променливи и методи. Служи за представяне на реални обекти от света.
Б) атрибути (свойства) на клас (Properties) – вместо променливи
В) методи на клас (Methods) – описват поведението на класа
1 2 3 4 5 6 7 8 9 |
Class MyCar{ int speed; string model; public void ShowInfo(…); } |
3. Обекти
а) Определение – конкретни представители на даден клас
1 2 3 |
MyCar car1 = new MyCar(); MyCar golfBaiGeorgi = new MyCar(); |
4. Капсулация
а) определение – скриване на информация. Прави невъзможно потребителите на даден обект да променят по неочакван начин неговото поведение.
б) видове капсулация:
private –потребителят няма достъп до този атрибут/метод
public – потребителят има достъп до този атрибут/метод
5. Конструктор на клас – Използва се при всяко създаване на обект на класа
1 2 3 4 5 6 7 8 9 |
Public MyCar() { this.Model = “Default Car” this.Speed = 220; } |
Примерна задача: Да се направи клас Vehicle, който има: speed, model, color. Да има методи: ShowInfo(…) – показва информация за превозно средство; Tuning(…), – променя някои от свойствата на класа . Да се направят поне 2 обекта на класа и да се тестват различните методи.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
public class Vehicle { private int speed; private string model; private string color; public int Speed { get { return speed; } set { speed = value; } } public string Model { get { return model; } set { model = value; } } public string Color { get { return color; } set { color = value; } } public Vehicle(int s, string m, string c) { this.Speed = s; this.Model = m; this.Color = c; } public Vehicle() { this.Speed = 220; this.Model = "Lada Niva"; this.Color = "Pink"; } public void ShowInfo(Label lbl) { lbl.Text = ""; lbl.Text += " model = " + Model; lbl.Text += " speed = " + Speed.ToString(); lbl.Text += " color = " + Color; } public virtual void Tuning(int speedAdded, Label lbl) { Speed = Speed + speedAdded; Model = Model + " tuninged"; lbl.Text = Model + " vehicle was Tuninged with " + speedAdded + ". New max speed = " + Speed; } } |
Използване на класа – създаване на обекти:
1 2 3 4 5 6 7 8 |
Vehicle vehicle1 = new Vehicle(); Vehicle uncleBobVehicle = new Vehicle(); protected void Button2_Click(object sender, EventArgs e) { vehicle1.ShowInfo(Label5); uncleBobVehicle.Tuning(20, Label6); } |
Задачи за упражнение:
- Да се създаде клас Singer, който има: name, age, fans, money (*други по избор). Да има методи: ShowInfo(…) – показва информация за изпълнителя; CreateSong(…), PlayConcert(…) – променят някои от свойствата на класа . Да се направят поне 2 обекта на класа и да се тестват различните методи.
- Към класа Singer да се добави капсулация на атрибутите и методи за Get и Set. Какви проверки сложихте в тези методи?
- Да се добави поне 1 скрит(private) метод към класа Singer. Къде и как използвате този метод?