Различия

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

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

Следующая версия
Предыдущая версия
theory:oop_c [2024/11/24 14:29] – создано labuser30theory:oop_c [2024/12/04 12:44] (текущий) labuser30
Строка 32: Строка 32:
  
 Попробуем разобраться на примере Попробуем разобраться на примере
-<code python+<code arduino
-class Car: +class Car 
-    def __init__(self, colorfuelconsumption)+  private
-        self.color = color +    String color
-        self.fuel = fuel +    float fuel
-        self.consumption = consumption +    float consumption
-        self.odo = 0 +    int odo; 
-         +   
-    def go(self, way): +  public    
-        self.odo += way +    Car(String _color, int _fuel, float _consumption) { 
-        self.fuel -=  self.consumption/100 * way +      color = _color; 
-     +      fuel = _fuel; 
-    def get_odo(self): +      consumption = _consumption; 
-        return self.odo +      odo = 0
-     +    } 
-    def get_fuel(self): + 
-        return self.fuel+    void go(int dist{ 
 +      odo += dist; 
 +      fuel -= consumption / 100.0 dist; 
 +    
 + 
 +    float getFuel() { 
 +      return fuel; 
 +    
 +       
 +    int getOdo() { 
 +      return odo; 
 +    } 
 +};
 </code> </code>
  
Строка 59: Строка 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>
  
Строка 84: Строка 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>
  
Строка 102: Строка 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>