← Назад к вопросам

Что такое ООП?

1.0 Junior🔥 291 комментариев
#ООП и паттерны

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое ООП (Объектно-ориентированное программирование)

ООП — это парадигма программирования, которая организует код вокруг объектов — сущностей, содержащих данные (свойства) и методы (поведение). Это один из самых популярных подходов к разработке, особенно в Dart и Flutter.

Четыре столпа ООП

1. Инкапсуляция (Encapsulation)

Это скрытие внутреннего состояния объекта и предоставление контролируемого доступа через public интерфейс.

class BankAccount {
  // Private переменная
  double _balance = 0;
  
  // Public метод для безопасного доступа
  void deposit(double amount) {
    if (amount > 0) {
      _balance += amount;
    }
  }
  
  // Getter для получения значения
  double get balance => _balance;
}

void main() {
  final account = BankAccount();
  account.deposit(100);
  print(account.balance); // 100
}

2. Наследование (Inheritance)

Это механизм, позволяющий классу наследовать свойства и методы у другого класса, расширяя его функциональность.

class Animal {
  String name;
  
  Animal(this.name);
  
  void makeSound() {
    print("Some sound");
  }
}

class Dog extends Animal {
  Dog(String name) : super(name);
  
  @override
  void makeSound() {
    print("Woof! I am $name");
  }
}

void main() {
  final dog = Dog("Rex");
  dog.makeSound(); // Woof! I am Rex
  print(dog.name); // Rex
}

3. Полиморфизм (Polymorphism)

Это способность объектов принимать множество форм. Один интерфейс, разные реализации.

abstract class Shape {
  double getArea();
}

class Circle extends Shape {
  final double radius;
  
  Circle(this.radius);
  
  @override
  double getArea() => 3.14 * radius * radius;
}

class Rectangle extends Shape {
  final double width, height;
  
  Rectangle(this.width, this.height);
  
  @override
  double getArea() => width * height;
}

void printArea(Shape shape) {
  print("Area: ${shape.getArea()}");
}

void main() {
  final circle = Circle(5);
  final rect = Rectangle(4, 6);
  
  printArea(circle); // Area: 78.5
  printArea(rect);   // Area: 24.0
}

4. Абстракция (Abstraction)

Это скрытие сложности, предоставление только необходимого интерфейса.

abstract class Database {
  Future<List<T>> query<T>(String sql);
  Future<void> execute(String sql);
}

class PostgresDatabase implements Database {
  @override
  Future<List<T>> query<T>(String sql) async {
    return [];
  }
  
  @override
  Future<void> execute(String sql) async {
    // Реализация
  }
}

Классы и объекты во Flutter

class User {
  final String id;
  final String email;
  String nickname;
  
  User({
    required this.id,
    required this.email,
    required this.nickname,
  });
  
  void updateNickname(String newName) {
    nickname = newName;
  }
  
  Map<String, dynamic> toJson() {
    return {
      "id": id,
      "email": email,
      "nickname": nickname,
    };
  }
}

Принципы SOLID в контексте ООП

  • Single Responsibility — один класс, одна ответственность
  • Open/Closed — открыт для расширения, закрыт для модификации
  • Liskov Substitution — дочерние классы заменяют родительские
  • Interface Segregation — много специфичных интерфейсов лучше одного общего
  • Dependency Inversion — зависимость от абстракций, не от реализаций

Заключение

ООП — это мощный инструмент для организации кода, делающий его более модульным, переиспользуемым и легче поддерживаемым. В Flutter ООП — основной подход к разработке приложений.

Что такое ООП? | PrepBro