• Лакаво просимо а Курси програмного забезпечення та технологічна платформа.
 

Показувати повідомлення

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Показувати повідомлення

Messages - Tafzy

#1

Flutter — це популярний фреймворк від Google для створення кросплатформених додатків із єдиною кодовою базою. Він базується на мові програмування Dart, яка підтримує об'єктно-орієнтоване програмування (ООП). У цій статті ми розглянемо класи та об'єкти в контексті Flutter і Dart, надамо практичні приклади та пояснимо, як їх використовувати для створення додатків. Цей матеріал ідеально підійде для новачків і тих, хто хоче краще зрозуміти основи Flutter. Почнімо!

Що таке класи та об'єкти в Flutter (Dart)?
Клас — це шаблон, який визначає властивості (дані) та методи (функції), що описують поведінку об'єкта. Об'єкт — це конкретний екземпляр класу, створений на основі цього шаблону. У Flutter класи є основою для створення віджетів, моделей даних і логіки додатків.

Основні принципи:
  • У Dart усе є об'єктом, навіть базові типи, такі як int чи String.
  • Класи дозволяють структурувати код і повторно використовувати його.

Як створити клас у Flutter?
Клас у Dart створюється за допомогою ключового слова class. Ось простий приклад:
class Person {
  String name;  // Властивість
  int age;

  // Конструктор
  Person(this.name, this.age);

  // Метод
  void introduce() {
    print("Привіт, мене звати $name, мені $age років.");
  }
}

У цьому прикладі:
  • name і age — це властивості класу.
  • Person(this.name, this.age) — це скорочений синтаксис конструктора в Dart.
  • introduce() — це метод, який виводить інформацію про об'єкт.

Створення об'єкта в Flutter
Щоб створити об'єкт, використовуйте ключове слово new (хоча в Dart воно необов'язкове):
void main() {
  // Створення об'єкта
  var person = Person("Олена", 25);

  // Доступ до властивостей
  print(person.name);  // Виведе: Олена

  // Виклик методу
  person.introduce();  // Виведе: Привіт, мене звати Олена, мені 25 років.
}


Використання класів у Flutter для віджетів
У Flutter класи часто використовуються для створення користувацьких віджетів. Ось приклад створення простого віджета:
import 'package:flutter/material.dart';

class GreetingWidget extends StatelessWidget {
  final String name;

  // Конструктор
  GreetingWidget(this.name);

  @override
  Widget build(BuildContext context) {
    return Text(
      "Привіт, $name!",
      style: TextStyle(fontSize: 24, color: Colors.blue),
    );
  }
}

void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        body: Center(
          child: GreetingWidget("Іван"),
        ),
      ),
    ),
  );
}

У цьому прикладі:
  • GreetingWidget — це клас, який успадковує StatelessWidget.
  • Метод build() повертає віджет Text із привітанням.

Ініціалізація об'єктів із конструкторами
Dart підтримує різні типи конструкторів, наприклад, іменовані конструктори:
class Car {
  String brand;
  int year;

  // Основний конструктор
  Car(this.brand, this.year);

  // Іменований конструктор
  Car.unknownYear(this.brand) {
    year = 0;
  }

  void displayInfo() {
    print("Автомобіль: $brand, Рік: $year");
  }
}

void main() {
  var car1 = Car("Toyota", 2020);
  var car2 = Car.unknownYear("BMW");

  car1.displayInfo();  // Виведе: Автомобіль: Toyota, Рік: 2020
  car2.displayInfo();  // Виведе: Автомобіль: BMW, Рік: 0
}


Практичний приклад: Модель даних у Flutter
Розглянемо приклад створення класу для моделі даних, наприклад, продукту в магазині:
class Product {
  String name;
  double price;
  bool inStock;

  Product({required this.name, required this.price, this.inStock = true});

  void showDetails() {
    print("Продукт: $name, Ціна: $price грн, В наявності: $inStock");
  }
}

void main() {
  var product = Product(name: "Телефон", price: 12000.0);
  product.showDetails();  // Виведе: Продукт: Телефон, Ціна: 12000.0 грн, В наявності: true
}

Цей клас можна використовувати для зберігання та обробки даних у Flutter-додатку.

Поради для роботи з класами в Flutter
  • Використовуйте required для обов'язкових параметрів: Це підвищує безпеку коду.
  • Розділяйте логіку та UI: Створюйте окремі класи для моделей даних і віджетів.
  • Експериментуйте з конструкторами: Іменовані конструктори спрощують створення об'єктів.
  • Оптимізуйте віджети: Уникайте складних обчислень у методі build().

Висновок
Класи та об'єкти в Flutter (і Dart) — це основа для створення структурованого та ефективного коду. Вони дозволяють розробникам створювати як моделі даних, так і користувацькі віджети для інтерфейсу. Завдяки прикладам у цій статті ви можете почати застосовувати ці концепції у своїх проєктах. Практикуйтеся та створюйте власні класи вже сьогодні!
#2

Swift — це потужна та інтуїтивно зрозуміла мова програмування, розроблена Apple, яка широко використовується для створення додатків для iOS, macOS, watchOS і tvOS. Однією з ключових особливостей Swift є підтримка об'єктно-орієнтованого програмування, зокрема спадкування (inheritance). У цій статті ми розглянемо, що таке спадкування в Swift, як його використовувати та надамо практичні приклади. Цей матеріал ідеально підійде як для новачків, так і для розробників, які хочуть поглибити свої знання. Почнімо!

Що таке спадкування в Swift?
Спадкування — це механізм, який дозволяє одному класу (похідному або дочірньому) успадковувати властивості та методи іншого класу (базового або батьківського). Це допомагає повторно використовувати код і створювати ієрархію класів.

Основні принципи спадкування:
  • Базовий клас — це клас, від якого успадковуються властивості та методи.
  • Похідний клас — це клас, який успадковує та може розширювати або змінювати функціональність базового класу.
  • У Swift кожен клас може мати лише один базовий клас (одинарне спадкування).

Як працює спадкування в Swift?
Щоб створити похідний клас, використовуйте двокрапку : після назви класу, вказавши базовий клас.

Приклад базового та похідного класів:
// Базовий клас
class Animal {
    var name: String
   
    init(name: String) {
        self.name = name
    }
   
    func makeSound() {
        print("Ця тварина видає звук!")
    }
}

// Похідний клас
class Dog: Animal {
    func bark() {
        print("\(name) гавкає: Гав-гав!")
    }
}

// Використання
let myDog = Dog(name: "Рекс")
myDog.makeSound()  // Виведе: Ця тварина видає звук!
myDog.bark()       // Виведе: Рекс гавкає: Гав-гав!

У цьому прикладі:
  • Animal — базовий клас із властивістю name і методом makeSound().
  • Dog — похідний клас, який успадковує name і makeSound(), а також додає власний метод bark().

Перевизначення методів (Overriding)
Похідний клас може перевизначити методи або властивості базового класу, використовуючи ключове слово override.

Приклад перевизначення:
class Animal {
    var name: String
   
    init(name: String) {
        self.name = name
    }
   
    func makeSound() {
        print("Ця тварина видає звук!")
    }
}

class Cat: Animal {
    override func makeSound() {
        print("\(name) нявкає: Мяу-мяу!")
    }
}

let myCat = Cat(name: "Мурка")
myCat.makeSound()  // Виведе: Мурка нявкає: Мяу-мяу!

Тут метод makeSound() був перевизначений у класі Cat, щоб відобразити специфічну поведінку кота.

Доступ до базового класу з super
Ключове слово super дозволяє звертатися до методів, властивостей або ініціалізаторів базового класу.

Приклад використання super:
class Animal {
    var name: String
   
    init(name: String) {
        self.name = name
    }
   
    func makeSound() {
        print("Ця тварина видає звук!")
    }
}

class Bird: Animal {
    override func makeSound() {
        super.makeSound()  // Виклик методу базового класу
        print("\(name) співає: Чірік-чірік!")
    }
}

let myBird = Bird(name: "Чікі")
myBird.makeSound()
// Виведе:
// Ця тварина видає звук!
// Чікі співає: Чірік-чірік!


Обмеження спадкування з final
Якщо ви хочете заборонити спадкування класу або перевизначення методу, використовуйте ключове слово final.

Приклад:
final class Animal {
    var name: String
   
    init(name: String) {
        self.name = name
    }
   
    final func makeSound() {
        print("Ця тварина видає звук!")
    }
}

// class Dog: Animal { } // Помилка: спадкування від final класу неможливе



Практичний приклад: Ієрархія транспортних засобів
Розглянемо приклад створення ієрархії класів для транспортних засобів:
class Vehicle {
    var speed: Int
   
    init(speed: Int) {
        self.speed = speed
    }
   
    func move() {
        print("Транспорт рухається зі швидкістю \(speed) км/год.")
    }
}

class Car: Vehicle {
    var brand: String
   
    init(speed: Int, brand: String) {
        self.brand = brand
        super.init(speed: speed)
    }
   
    override func move() {
        print("Автомобіль \(brand) їде зі швидкістю \(speed) км/год.")
    }
}

let myCar = Car(speed: 120, brand: "Tesla")
myCar.move()  // Виведе: Автомобіль Tesla їде зі швидкістю 120 км/год.

Цей приклад показує, як можна створювати спеціалізовані класи на основі загального базового класу.

Поради для роботи зі спадкуванням у Swift
  • Використовуйте спадкування розумно: Не зловживайте ним, якщо можна обійтися композицією.
  • Перевіряйте типи: Використовуйте is і as? для безпечної роботи з об'єктами.
  • Документуйте код: Додавайте коментарі, щоб пояснити логіку ієрархії.
  • Тестуйте перевизначення: Переконайтеся, що перевизначені методи працюють коректно.

Висновок
Спадкування в Swift — це потужний інструмент, який дозволяє створювати гнучкі та повторно використовувані структури коду. Завдяки прикладам у цій статті ви можете почати застосовувати спадкування у своїх проєктах. Практикуйтеся, створюйте власні класи та відкривайте нові можливості Swift!