Контур :

  1. Понимание операторов в Dart
  • Арифметические операторы
  • Реляционные операторы
  • Логические операторы

2. Изучение конструкторов в Dart

  • Конструктор по умолчанию
  • Именованные конструкторы
  • Параметризованные конструкторы

3. Переменное затенение

  • Что такое переменное затенение?
  • Локальные и глобальные переменные

4. Демистификация ключевого слова «этот»

  • Доступ к переменным экземпляра
  • Как избежать двусмысленности имени переменной

5. Инициализация параметра формата

  • Использование интерполяции строк
  • Метод «toString()»

Заключение

Часто задаваемые вопросы

1. Понимание операторов в Dart

Dart предоставляет широкий спектр операторов для выполнения различных операций с данными. Эти операторы можно разделить на несколько типов.

Арифметические операторы

Арифметические операторы используются для основных математических вычислений.

void main() {
  int a = 10;
  int b = 5;
  
  // Addition
  int additionResult = a + b;
  print("Addition Result: $additionResult"); // Output: 15
  
  // Subtraction
  int subtractionResult = a - b;
  print("Subtraction Result: $subtractionResult"); // Output: 5
  
  // Multiplication
  int multiplicationResult = a * b;
  print("Multiplication Result: $multiplicationResult"); // Output: 50
  
  // Division
  double divisionResult = a / b;
  print("Division Result: $divisionResult"); // Output: 2.0
  
  // Modulus (Remainder of Division)
  int modulusResult = a % b;
  print("Modulus Result: $modulusResult"); // Output: 0
}

Реляционные операторы

Реляционные операторы помогают сравнивать значения и определять отношения между ними.

void main() {
  int a = 10;
  int b = 5;
  
  // Greater than
  bool greaterThanResult = a > b;
  print("Is $a greater than $b? $greaterThanResult"); // Output: true
  
  // Less than
  bool lessThanResult = a < b;
  print("Is $a less than $b? $lessThanResult"); // Output: false
  
  // Equal to
  bool equalToResult = a == b;
  print("Is $a equal to $b? $equalToResult"); // Output: false
  
  // Not equal to
  bool notEqualToResult = a != b;
  print("Is $a not equal to $b? $notEqualToResult"); // Output: true
}

Логические операторы

Логические операторы используются для выполнения логических операций, комбинируя несколько условий для получения конечного результата.

void main() {
  bool x = true;
  bool y = false;
  
  // AND (&&)
  bool andResult = x && y;
  print("AND Result: $andResult"); // Output: false
  
  // OR (||)
  bool orResult = x || y;
  print("OR Result: $orResult"); // Output: true
  
  // NOT (!)
  bool notXResult = !x;
  bool notYResult = !y;
  print("NOT Result of x: $notXResult"); // Output: false
  print("NOT Result of y: $notYResult"); // Output: true
}

2. Изучение конструкторов в Dart

Конструкторы — это специальные методы, используемые для инициализации объекта. Они позволяют задать начальные значения и подготовить объект к использованию.

Конструктор по умолчанию

Конструктор по умолчанию создается автоматически, если пользовательский конструктор не определен. Он инициализирует объект значениями по умолчанию.

class Student {
  String name;
  int age;
  
  // Default constructor
  Student() {
    name = "Not Specified";
    age = 0;
  }
  
  void info() {
    print("Student Name: $name");
    print("Student Age: $age years");
  }
}

void main() {
  Student student = Student();
  student.info();
}

Именованные конструкторы

Именованные конструкторы предоставляют альтернативный способ создания объектов и позволяют определить несколько способов инициализации объекта.

class Student {
  String name;
  int age;
  
  // Named constructor
  Student.user({String userName, int userAge}) {
    name = userName;
    age = userAge;
  }
  
  void info() {
    print("Student Name: $name");
    print("Student Age: $age years");
  }
}

void main() {
  Student student = Student.user(userName: "Andy", userAge: 21);
  student.info();
}

Параметризованные конструкторы

Параметризованные конструкторы позволяют передавать аргументы во время создания объекта, устанавливая определенные значения в соответствии с вашими требованиями.

class Student {
  String name;
  int age;
  
  // Parameterized constructor
  Student(String studentName, int studentAge) {
    name = studentName;
    age = studentAge;
  }
  
  void info() {
    print("Student Name: $name");
    print("Student Age: $age years");
  }
}

void main() {
  Student student = Student("Bobby", 19);
  student.info();
}

3. Переменное затенение

Затенение переменной происходит, когда локальная переменная скрывает переменную с тем же именем в более высокой области. Давайте лучше поймем эту концепцию.

Что такое переменное затенение?

Затенение переменных происходит, когда переменная внутри блока или области имеет то же имя, что и переменная во внешней области.

void main() {
  int x = 10;
  
  // Block within the main function
  {
    int x = 5; // Local variable that shadows the variable above it
    print(x); // Output: 5
  }
  
  print(x); // Output: 10 (The variable outside the block remains unchanged)
}

Локальные и глобальные переменные

Понимание области действия переменных необходимо, чтобы избежать путаницы при затенении переменных.

int x = 10; // Global variable

void main() {
  int x = 5; // Local variable that shadows the global variable with the same name
  print(x); // Output: 5 (Local variable)
  
  // Accessing the global variable using "this"
  print(this.x); // Output: 10 (Global variable)
}

4. Демистификация ключевого слова «this»

Ключевое слово this относится к текущему экземпляру класса. Он используется для доступа к переменным экземпляра и предотвращения неоднозначности имени переменной.

Доступ к переменным экземпляра

Используя ключевое слово this, мы можем получить доступ к переменным экземпляра и отличить их от локальных переменных.

class Student {
  String name;
  
  Student(String studentName) {
    // Using "this" to access the instance variable "name"
    this.name = studentName;
  }
  
  void info() {
    // Using "this" to access the instance variable "name"
    print("Student Name: ${this.name}");
  }
}

void main() {
  Student student = Student("Rudy");
  student.info(); // Output: Student Name: Rudy
}

Как избежать двусмысленности имени переменной

Ключевое слово this помогает четко определить, какую переменную мы имеем в виду в текущем контексте.

class Circle {
  double radius;
  
  Circle(double circleRadius) {
    this.radius = circleRadius;
  }
  
  double calculateArea() {
    // Using "this" to avoid ambiguity with local variables
    return 3.14 * this.radius * this.radius;
  }
}

void main() {
  Circle circle = Circle(5);
  double area = circle.calculateArea();
  print("Circle Area: $area"); // Output: Circle Area: 78.5
}

5. Инициализация параметра формата

В Dart вы можете использовать интерполяцию строк для инициализации параметров формата и создания динамических строк.

Использование интерполяции строк

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

void main() {
  String name = "Bobby";
  int age = 25;
  
  // Using string interpolation to combine variables with a string
  String sentence = "Hello, my name is $name, and I am $age years old.";
  print(sentence); // Output: Hello, my name is Bobby, and I am 25 years old.
}

Метод «toString()»

Метод toString() используется для получения строкового представления объекта и настройки его вывода.

class Person {
  String name;
  int age;
  
  Person(String personName, int personAge) {
    this.name = personName;
    this.age = personAge;
  }
  
  // Override the "toString()" method to get the object representation in the form of a string
  @override
  String toString() {
    return "Name: $name, Age: $age";
  }
}

void main() {
  Person person = Person("Andy", 30);
  // Automatically use the "toString()" method when printing an object
  print(person); // Output: Name: Andy, Age: 30
}

Заключение

Поздравляем! Вы завершили третью часть нашей серии Dart OOP. В этой статье мы рассмотрели такие важные понятия, как операторы, конструкторы, затенение переменных, ключевое слово this и инициализирующие параметры формата. Освоение этих концепций значительно улучшит ваши навыки программирования в Dart.

Часто задаваемые вопросы

  1. Что такое конструкторы в Dart? Конструкторы — это специальные методы, используемые для инициализации объектов в Dart.
  2. Как избежать затенения переменных в Dart? Вы можете использовать ключевое слово this, чтобы получить доступ к переменным экземпляра и отличить их от локальных переменных.
  3. Какова цель интерполяции строк? Интерполяция строк позволяет создавать динамические строки путем встраивания в них выражений.
  4. Как сравнить значения в Dart? Dart предоставляет различные реляционные операторы для сравнения значений.
  5. Можно ли создать несколько конструкторов для одного класса в Dart? Да,Dart позволяет вам определять именованные конструкторы для создания объектов разными способами.
Social Media :
- Website = https://wafiqmuhaz.netlify.app/
- Gmail = [email protected]
- Instagram = @az.wamuh_
- TikTok = @az.wamuh_