Введение

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

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

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

Вы должны знать!!!

Прежде чем мы пойдем дальше, читатели должны сначала понять основы программирования и основных концепций программирования на любом языке программирования, таком как Java, Python или JavaScript.

К концу этой статьи читатели смогут понять:

  • Может написать код ситуации, который поможет нам понять передовые концепции программирования.
  • Узнайте о передовых концепциях программирования, таких как классы, объекты, абстракции, полиморфизм, инкапсуляция, наследование, модификаторы доступа и статические классы.
  • Изучите концепции, необходимые при использовании дартс в качестве предпочтительного языка. Однако концепции одинаковы для любого языка программирования, о котором мы только можем подумать, только они представлены с использованием другого синтаксиса.

Что такое Dart Language

Язык программирования дартс

Dart — это оптимизированный клиентский многоплатформенный язык программирования, используемый для разработки быстрых приложений, разработанных Google, для гибкой платформы выполнения во время выполнения. Язык Dart безопасен для типов, поэтому мы должны указывать тип данных, которые будут храниться в памяти, всякий раз, когда мы объявляем переменные или модификаторы, что называется хорошей типизацией.

В то время как типы необходимы, в dart условия типов необязательны из-за вывода типа. Это дает нам гибкий способ определения наших переменных и может быть очень полезным, поскольку мы можем быть не уверены в ожидаемом типе данных.

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

Что такое классы и объекты

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

Объектно-ориентированное программирование (ООП) позволяет нам разрабатывать крупномасштабное программное обеспечение, и основной концепцией ООП являются классы. Класс — это программируемая концепция, которая определяет свойства и поведение объектов и может быть представлена ​​в синтаксисе кодирования.

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

Поля данных определяют свойства или атрибуты этого класса (известные как состояние объекта).

String name и int age — это поля данных, которые становятся свойствами простого класса Person. Поведение или действия объекта, созданного из этого класса, представлены в виде методов/функций. Метод по умолчанию, имя которого совпадает с именем класса, используемого при создании экземпляра этого класса, называется функцией «конструктор».

String speak и String sayAge — это поведение, которое может выполнять класс Person. Методы представляют их.

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

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

Итак, из приведенного выше примера с классом Person, если мы создадим объект или несколько объектов из этого класса, каждый из них будет иметь уникальные свойства (имя, возраст) и уникальное поведение (говорить, сказать, возраст).

Создание экземпляра объекта

В других языках программирования, таких как Java, мы используем уникальное ключевое слово «новый» для создания экземпляра объекта из класса. Однако, в dart, его желание приспособить программистов, пришедших с жестко типизированного языка, такого как Java. Кроме того, программисты, работающие со слабо типизированным языком, таким как JavaScript, могут создавать экземпляр объекта без использования ключевого слова «новый» во второй версии языка программирования Dart. Следовательно, мы можем создавать объекты из класса Person любым из следующих способов.

Затем мы можем вызвать отдельные свойства и поведение этого объекта, используя отдельные переменные экземпляра P1 или P2.

Обратите внимание, что в этом случае они оба дают тот же результат, что и вывод. Хотя выходные данные одинаковы, они не являются одинаковыми значениями. P1 — частное лицо с именем «Рики» и возрастом «25». Точно так же P2 — еще одно частное лицо с именем «Рики» и возрастом «25».

Вышеупомянутое не является проблемой, и мы можем создавать другие сущности с другими именами и возрастом, указанными с помощью установленного нами метода конструктора, который существует в каждом классе.

Конструкторы

конструктор функций

Как уже говорилось, каждый класс имеет скрытый метод по умолчанию, называемый функцией-конструктором, для создания экземпляра данного класса. Мы можем указать нашу функцию-конструктор, которая должна следовать следующим директивам, чтобы быть помеченной функцией-конструктором:

  • Должен быть метод//функция.
  • Должен иметь то же имя, что и сам класс.
  • Нельзя указать тип возвращаемого значения.
  • Может принимать параметры в своих функциональных скобках.

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

В приведенном выше примере у нас есть три функции-конструктора: наши пользовательские конструкторы.

Первый конструктор Person перезаписывает конструктор по умолчанию каждый раз, когда класс Person используется для создания объекта. Таким образом, любой объект, созданный с использованием класса Person, будет иметь свойство name «RICKY» и возраст «28».

Второй конструктор Person указывает, что мы можем создать объект Person со значениями, которые нам нужны как для имени поля данных, так и для возраста. Когда параметры передаются, он обновляет поля данных. Указанное ключевое слово this относится к самому классу, в данном случае к классу Person.

Второй конструктор Person указывает, что мы можем создать объект Person со значениями, которые нам нужны как для имени поля данных, так и для возраста. Когда параметры передаются, он обновляет поля данных. Указанное ключевое слово this относится к самому классу, в данном случае к классу Person.

Третий конструктор Person указывает, что мы можем создать объект Person со значениями, которые мы хотим для имени поля данных и возраста, что очень похоже на наш второй конструктор. Это наш второй конструктор, но здесь dart предоставляет нам сокращенный метод записи.

Этот конструктор называется Именованный конструктор.

Модификаторы доступа

Модификаторы доступа/видимости

Модификаторы доступа/видимости можно использовать для указания видимости класса и его члена. В таких языках программирования, как Java, C++, C#, ключевые слова public, protected и private могут использоваться для указания области видимости для полей данных или методов класса.

Однако в dart нет определенного ключевого слова, которое описывает поля данных и методы как общедоступные, частные или защищенные. Вместо этого Dart предоставляет нам способ справиться с этим. Все поля данных являются общедоступными по умолчанию, но их можно ограничить частными модификаторами, добавив знак подчеркивания «_» перед указанным модификатором.

Любой модификатор, начинающийся как таковой, будет обрабатываться как частный тип данных уровня доступа и использоваться только внутри библиотеки Dart. Библиотека Dart — это отдельный файл Dart, который можно использовать в другом файле, используя ключевое слово «import» для его извлечения.

s1.password возвращает ошибку, потому что мы пытаемся получить доступ к приватному полю данных вне его библиотеки (его файла). Чтобы решить эту проблему, нам нужно будет выполнить инкапсуляцию (обсуждается позже).

Статические классы и переменные экземпляра

Все примеры, над которыми мы работали до сих пор, были сценариями, которые имели дело с переменными экземпляра. Переменные экземпляра содержат объект; они создаются с ключевым словом new в dart или без него и с ключевым словом new в Java. Свойства и функции, вызываемые для переменных экземпляра, являются всеми свойствами переменных экземпляра и функциями переменных экземпляра.

P1.name и P1.age оба являются свойствами экземпляра переменной P1.

Статические классы — это классы со свойствами и функциями, заданными статически. Когда поле данных или функция указаны как статические, мы указываем, что конкретное свойство или функция принадлежит самому классу, а не какому-либо объекту-экземпляру.

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

Нет необходимости создавать экземпляр объекта для доступа к статическому полю данных или вызывать статический метод: чтобы вызвать статический член класса, прикрепите имя класса перед статическим полем данных или именем функции, чтобы использовать их.

Как видно из приведенного выше примера, Staff.displayDetails() называется статической переменной класса персонала.

Наследование

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

Наследование моделируется в dart с помощью метатега @override и достигается с помощью расширенного ключевого слова.

Поскольку все классы Dog, Bird и Fish являются производными от класса Animal, все они имеют доступ к свойствам и методам, определенным в их родителях. Следовательно, классы Dog, Bird и Fish могут вызывать метод движения в классе Animal без каких-либо ошибок.

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

Инкапсуляция

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

Для достижения инкапсуляции: Объявите поля данных с помощью модификатора доступа private. В случае дротика модификатор префикса подчеркивания («_»). Создайте общедоступные геттеры и сеттеры, которые разрешают косвенный доступ к этим переменным.

Используя тот же пример, что и в разделе «Модификатор доступа»:

_password класса Student нельзя редактировать или изменять вне класса Student, что обеспечивает защиту данных.

Абстракция

Абстракция класса — это отделение реализации класса от использования класса. Внутренняя реализация инкапсулирована и скрыта от нас. Типичным примером этого являются внутренне созданные методы dart, которые предлагаются нам для использования. Например, toUpperCase() типа String или .map() методов массива Dart.

Реализации этих методов нам неизвестны. Используемые поля данных и то, как он выполняет свои функции, скрыты, и нам не нужно беспокоиться о них. Нам нужно только знать, как работает функция, что ей нужно в качестве параметра и что она возвращает.

Полиморфизм

Полиморфизм — это способность объекта существовать более чем в одной форме. Наиболее заметное использование полиморфизма в dart — это когда объект экземпляра подкласса создается с использованием ссылочного типа суперкласса.

Из приведенного выше примера:

Из-за полиморфизма, поскольку классы Bird, Dog и Fish являются производными от класса Animal, объекты любых дочерних классов могут быть созданы с использованием родительского класса в качестве ссылочного типа.

Все это создаст объект экземпляра отдельных дочерних классов.

Заключение

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

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