Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое ООП (Объектно-ориентированное программирование)
ООП — это парадигма программирования, которая организует код вокруг объектов — сущностей, содержащих данные (свойства) и методы (поведение). Это один из самых популярных подходов к разработке, особенно в 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 ООП — основной подход к разработке приложений.