Въведение в OOP. Класове, обекти и наркотици.

Да загреем с въпроси.

Какво е статична типизация?

Какво означава:

int a = 5;
int a;

a = 5;

Къде е проблема?

public static int maxIntValue() {
  return Math.pow(2, 32);
}

Кавква е разликата?

char a = 'a';
char[] a = { 'J', 'a', 'v', 'a' };

Какво представля масива?

Има ли разлика от списъка?

Как наричаме къдравите скоби в Java?

Блок.

В Java, каква видимост имат променливите?

Блокова. Block scope.

Колко е 1010 в десетичен запис?

1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0
123+022+121+0201 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0

Object Oriented Programming:

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

  • Атрибути и методи.

  • public и private неща.

  • Конструктори.

  • this.

 Начин, по който конструираме нашите програми, използвайки класове и обекти.

Кучета!

Зеленчуци!

Въглехидрати!

Ние използваме така наречената класификация на различните неща всеки ден.

КЛАСИФИЦАЦИЯ

КЛАС-ИФИКАЦИЯ

Езиците за програмиране ни дават различни способи за решаване на даден проблем.

  1. Типове / променливи

  2. Списъци / масиви

  3. Условни конструкции / цикли

  4. Функции

  5. ???

Нива на абстракция:

В OOP езиците имаме още едно ниво на абстракция - обект.

Един обект:

  1. Има състояние (state)

  2. Има харатреристики (атрибути)

  3. Има държание (методи)

  4. Има тип (class)

  5. Може да бъде различен от другите обекти (identity, reference)

Примери за обекти:

String a = "Hello!";
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> l = new ArrayList<Integer>();

Как работи една кола?

Как се кара една кола?

Hidden Implementation

  • private част. До нея няма директен достъп.

  • public част. Знае за private частта и има директен достъп до нея.

Ние създаваме системи.

  • От какво са изградени те?

  • Как хората взаимодействат с тях?

  • Кое е private? Кое е public?

  • Това си е цяла наука в софтуера. Обектно ориентираното програмиране ни помага за това.

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

  1. Чрез клас, описваме как изглежда нашата система (това, което моделираме)
  2. В един клас може да имаме публични и частни части.
  3. Класът се възприема като шаблон за обекти.
  4. Обектите се създават от класа.
  5. От един клас може да създадем много обекти.
  6. Класът определя поведението на тези обекти.
class Person {
  public String firstName;
  public String lastName;
}

Класове:

  1. Kлас създаваме чрез ключовата дума class и име на класа.

  2. Името на класа трябва да съвпада с името на .java файла!

Атрибути - променливи в class.

  • Дават характеристика на класа.

  • Един човек има първо и второ име. Това са атрибути.

  • Атрибутите се дефинират в класа, извън методите.

class SofiaAirport {
  public String[] terminals = new String[2];
  public int capacity = 1000;
  public String name = "SOF";
}

Примери за атрибути:

class Dog {
  public String breed = "";
  public String name = "";
  public String gender = "";
  public int age = 0;
}

Примери за атрибути:

Методи - функции в class.

  • Дават поведение на класа.

  • Едно летище може да чекира хора и да отменя полети.

  • Едно куче може да лае.

  • Методите се пишат като функции, намиращи се в класа.

Примери за методи:

class SofiaAirport {
  public boolean checkin(String[] people) {
    return false;
  }

  public void cancelFlight(String flight) {
    // some magic here
  } 
}

Примери за методи:

class Dog {
  public void bark() {
    System.out.println("Woof!");
  }
}
class = \{ Attributes, Methods \}
class={Attributes,Methods}class = \{ Attributes, Methods \}
Attribute = (scope, type, name)
Attribute=(scope,type,name)Attribute = (scope, type, name)
Method = (scope, type, name, arguments)
Method=(scope,type,name,arguments)Method = (scope, type, name, arguments)

Изразено чрез множества:

Сууупер.

Ама какъв е смисъла на това? Как го ползваме?

А де?

О-----и

Обекти, майна.

  • Когато имаме клас, от него създаваме обекти

  • Както казахме - класът е просто шаблон на характеристика и действия.

  • За да направим нещо реално, ни трябва обект.

  • Майна.

class Person {
  public String firstName;
  public String lastName;
}
class Main {
  public static void main(String[] args) {
    Person ivan = new Person();
    ivan.firstName = "Ivan";
    ivan.lastName = "Georgiev";

    Person maria = new Person();
    maria.firstName = "Maria";
    maria.lastName = "Marcheto";
  }
}

Един обект:

  1. Има състояние (state)

  2. Има харатреристики (атрибути)

  3. Има държание (методи)

  4. Има тип (class)

  5. Може да бъде различен от другите обекти (identity, reference)

Един обект:

  1. Се създава с new от даден клас.

  2. Нарича се още инстанция на този клас.

  3. И чрез него може да използваме атрибути и методи

  4. Сега ще си поговорим за public и private.

Някъде в main-a (майна):

// instance of Person class.
Person ivan = new Person();
// setting values to public attributes
ivan.firstName = "Ivan";
ivan.lastName = "Georgiev";

Ние използваме готови обекти от Java библиотеките

// from java.utils
Scanner scanner = new Scanner(System.in);

Ние използваме готови обекти от Java библиотеките

Date today = new Date()
System.out.println(date);

Някъде в main-a (майна):

// instance of Person class.
Person maria = new Person();
// two instances are always different
// compared with ==

System.out.println(ivan == maria); // false

При обекти, == е интересно сравняване:

String a = new String("Java");
String b = new String("Java");

System.out.println(a == b); // false

Референции.

  1. Променливата, на която сме дали резултат от new, държи референциия

  2. Ако създадем два обекта с new, техните референции няма да са равни чрез ==

  3. Референцията представлява нещо като уникален номер за създадения обект.

class Person {
  public String name;
  
  public void sayHello() {
    System.out.println("Hello");
  }
  

  public static void main(String args[]) {
    Person ivan = new Person();
    ivan.name = "Ivan Georgiev";

    ivan.sayHello();
  }

}

Как да ползваме атрибут в метод?

class Person {
  public String name;
  
  public void sayHello() {
    System.out.println("Hello, my name is: " 
                       + name);
  }
}
public class Person {
  public String firstName = "";
  public String lastName = "";

  public String toString() {
    return firstName + " " + lastName;
  }

  public static void main(String args[]) {
    Person ivan = new Person();
    ivan.firstName = "Ivan";
    ivan.lastName = "Georgiev";
		
    System.out.println(ivan);
  }
}
  1. Класовете са шаблон - в тях описваме как се държат нашите обекти.

  2. Обектите се създават от даден клас (инстанция на клас)

  3. Чрез обектите може да викаме атрибутите и методите на класа

  4. Животът е хубав.

Обобщение:

Въведение в OOP. Класове, обекти и наркотици.

By Hack Bulgaria

Въведение в OOP. Класове, обекти и наркотици.

  • 2,026