Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
theory:oop_c [2024/11/30 12:12] labuser30theory:oop_c [2024/12/04 12:44] (текущий) labuser30
Строка 32: Строка 32:
  
 Попробуем разобраться на примере Попробуем разобраться на примере
-<code python>+<code arduino>
 class Car { class Car {
   private:   private:
     String color;     String color;
-    int fuel; +    float fuel; 
-    int consumption;+    float consumption;
     int odo;     int odo;
      
   public:       public:    
-    Car(String _color, int _fuel, int _consumption) {+    Car(String _color, int _fuel, float _consumption) {
       color = _color;       color = _color;
       fuel = _fuel;       fuel = _fuel;
Строка 47: Строка 47:
       odo = 0;       odo = 0;
     }     }
-    +
     void go(int dist) {     void go(int dist) {
       odo += dist;       odo += dist;
-      fuel -= consumption / 100 * dist;+      fuel -= consumption / 100.0 * dist;
     }     }
  
-    int getFuel() {+    float getFuel() {
       return fuel;       return fuel;
     }     }
Строка 71: Строка 71:
  
 Методы класса Car Методы класса Car
-  * ''go(self, way)'' — ехать. Принимает в качестве параметра количество километров +  * ''void go(int dist)'' — ехать. Принимает в качестве параметра количество километров 
-  * ''get_odo(self)'' — получить текущий пробег +  * ''int getOdo()'' — получить текущее количество топлива в баке 
-  * ''get_fuel(self)'' — получить текущее количество топлива в баке+  * ''float getFuel()'' — получить текущий пробег 
 + 
 + 
 +Сразу возникает вопрос, а что за метод ''Car(String _color, int _fuel, int _consumption)''. Это //конструктор// — функция, вызываемая при создании объекта. Когда создается объект, то код этой функции исполняется. Наш конструктор автомобиля принимает сразу несколько параметров — цвет, количество топлива в баке и потребление топлива на 100км. При создании объекта автомобиля мы эти параметры указываем и конструктор создает объект с заданными параметрами.
  
-Сразу возникает вопроса что за метод __init__. Это //конструктор// — функция, вызываемая при создании объекта. Когда создается объект, то код этой функции исполняется. Наш конструктор автомобиля принимает сразу несколько параметров — цвет, количество топлива в баке и потребление топлива на 100км. При создании объекта автомобиля мы эти параметры указываем и конструктор создает объект с заданными параметрами.+Класс это всего лишь шаблони объектов, которые могут быть созданы по нему — много. Используя класс Car можно создать много экземпляров автомобилей со своими наборами свойств
  
-Также непонятно что такое self в параметрах всех функций и при обращении к свойствам. self — это ссылка объекта на самого себя, на текущий экземпляр класса. Ведь класс это всего- лишь шаблон. И объектов, которые могут быть созданы по нему — много. Используя класс Car можно создать много экземпляров автомобилей со своими наборами свойств+Ключевые слова ''private'' (приватныйи ''public'' (публичный) определяют доступность свойств и методов снаружи класса. Например мы не сможем напрямую изменить свойство "odo" так как оно является приватным. Для изменения "odo" нам нужно воспользоваться публичным методом ''go()''
  
-Как видно мы описали абстрактно автомобиль. У любого автомобиля есть цвет, есть одометр, определенное потребление топлива и сколько-то топлива в баке. Теперь создадим два конкретных автомобилямой автомобиль и автомобиль брата:+Как видно мы описали абстрактно автомобиль. У любого автомобиля есть цвет, есть одометр, определенное потребление топлива и сколько-то топлива в баке. Теперь создадим два конкретных автомобиля — мой автомобиль и автомобиль брата:
  
-<code python+<code arduino
-MyCar = Car('Black', 50, 10) +Car MyCar("Black", 50, 10); 
-BrotherCar = Car('White', 60, 15)+Car BrotherCar("White", 60, 15);
 </code> </code>
  
-Мы создали два объекта автомобиля ''MyCar'' и  ''BrotherCar''. Это разные автомобили, разного цвета, в них разное количество топлива и даже потребляют они по- разному. Посмотрим сколько сейчас топлива в моем автомобиле и сколько он проехал+Мы создали два объекта автомобиля ''MyCar'' и  ''BrotherCar''. Это разные автомобили, разного цвета, в них разное количество топлива и даже потребляют они по-разному. Посмотрим сколько сейчас топлива в моем автомобиле и сколько он проехал.
  
-<code python+<code arduino
-print(MyCar.get_odo()) +Serial.println(MyCar.getOdo()); 
-print(MyCar.get_fuel())+Serial.println(MyCar.getFuel());
 </code> </code>
  
Строка 96: Строка 99:
 <code> <code>
 0 0
-50+50.00
 </code> </code>
  
 Мой автомобиль еще ничего не проехал и топлива не потратил нисколько. Теперь проедем 20 километров и еще 10. Мой автомобиль еще ничего не проехал и топлива не потратил нисколько. Теперь проедем 20 километров и еще 10.
-<code python+<code arduino
-MyCar.go(20) +MyCar.go(20); 
-MyCar.go(10)+MyCar.go(10);
 </code> </code>
  
 И повторим запросы пробега и уровня топлива И повторим запросы пробега и уровня топлива
-<code python+<code arduino
-print(MyCar.get_odo()) +Serial.println(MyCar.getOdo()); 
-print(MyCar.get_fuel())+Serial.println(MyCar.getFuel());
 </code> </code>
  
Строка 114: Строка 117:
 <code> <code>
 30 30
-47.0+47.00
 </code> </code>
  
 Действительно ''MyCar'' проехала 30 километров и за это время израсходовала 3 литра топлива. Теперь дадим проехаться машине ''BrotherCar'' Действительно ''MyCar'' проехала 30 километров и за это время израсходовала 3 литра топлива. Теперь дадим проехаться машине ''BrotherCar''
  
-<code python+<code arduino
-BrotherCar.go(15) +BrotherCar.go(15); 
-print(BrotherCar.get_odo()) +Serial.println(BrotherCar.getOdo()); 
-print(BrotherCar.get_fuel())+Serial.println(BrotherCar.getFuel());)
 </code> </code>