Основы объектно-ориентированного программирования в C# - Студенческий научный форум

XV Международная студенческая научная конференция Студенческий научный форум - 2023

Основы объектно-ориентированного программирования в C#

Васильцов М.С. 1
1ФГБОУ ВО «Брянский государственный университет им. И.Г. Петровского»
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

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

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

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

Все языки, основанные на объектно-ориентированном программировании (C#, Java, С++, Smalltalk, Visual Basic и т.п.) должны отвечать следующим принципам:

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

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

полиморфизм.

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

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

Существует языки программирования (например Python), в которых присутствует объединение данных, но не поддерживается их сокрытие. В следствии чего разработчику программного продукта придётся быть более аккуратнее при работе с объектами.

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

Программный код и данные, составляющие вместе класс, называют членами. Данные, определяемые классом, называют полями, или переменными экземпляра. А код, оперирующий данными, содержится в функциях-членах, самым типичным представителем которых является метод. В C# метод служит в качестве аналога подпрограммы. (К числу других функций-членов относятся свойства, события и конструкторы.) Таким образом, методы класса содержат код, воздействующий на поля, определяемые этим классом.

Инкапсуляция реализуется с использованием спецификаторов доступа. Спецификатор доступа определяет область видимости члена класса. C# поддерживает следующие спецификации доступа:

общественный;

частный;

защищенный;

внутренний;

защищенный внутренний.

Спецификатор общего доступа – позволяет классу подвергать свои переменные-члены и функции-члены другим функциям и объектам. Доступ к любому публичному члену можно получить извне класса.

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

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

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

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

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

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

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

C# поддерживают только одиночное наследование. Это означает, что каждый класс может наследовать члены только одного класса. Исходя из этого данный язык программирования поддерживает транзитивное наследование, которое позволяет определить иерархию наследования для набора типов. Другими словами, первый класс может наследовать возможности третьего класса, который в свою очередь наследует функциональность от второго класса, который наследует функциональность от базового первого класса.

Не все члены родительского класса наследуются дочерними классами. Существуют следующие члены, которые не наследуются:

Статические конструкторы, которые инициализируют статические данные класса.

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

Методы завершения, которые вызываются сборщиком мусора среды выполнения для уничтожения экземпляров класса.

Все остальные члены базового класса наследуются производными классами, но их видимость не зависит от доступности. Доступность членов влияет на видимость для производных классов следующим образом:

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

Защищенные члены являются видимыми только в производных классах.

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

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

Полиморфизм

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

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

Статический полиморфизм

Механизм связывания функции с объектом во время компиляции называется ранним связыванием. Он также называется статическое связывание. C# использует два механизма для реализации статического полиморфизма:

Перегрузка метода

Перегрузка оператора

Перегрузка метода

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

Динамический полиморфизм

C# позволяет создавать абстрактные классы, которые используются для обеспечения частичной реализации интерфейса. Реализация завершается, когда производный класс наследует от него. Абстрактные классы содержат абстрактные методы, которые осуществляются в производном классе. Производные классы имеют более специализированные функциональные возможности. Динамический полиморфизм реализуется абстрактными классами и виртуальными методами.

Заключение: хоть объектно-ориентированное программирование и имеет такие плюсы, как модульность, гибкость, экономия времени, безопасность, у него есть и свои недоставки. Они заключаются в том, что нужно освоить большой объём теоретических знаний, чтобы полноценно пользоваться всеми принципами объектно-ориентированного программирования, а также снижается производительность программного кода, введу особенностей доступа к данным и большого количества сущностей. Так же не маловажную роль играет и размер программы, который обычно длиннее и занимает больше места на диске, из-за того, что в программе хранится больше конструкций, чем в обычном процедурном скрипте. Но несмотря на это, знание ООП показывает высокий уровень навыков программиста.

Список использованной литературы

Электронное издание. Объектно-ориентированное программирование [Электронный ресурс] URL: https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование (дата обращения 12.12.2022).

Электронное издание. Объектно-ориентированное программирование [Электронный ресурс] URL: https://blog.skillfactory.ru/glossary/oop-obektno-orientirovannoe-programmirovanie (дата обращения 12.12.2022).

Электронное издание. Введение в ООП с примерами на C#. [Электронный ресурс] URL: https://tproger.ru/translations/diving-in-oop-p1 (дата обращения 12.12.2022).

Электронное издание. Основы объектно-ориентированного программирования [Электронный ресурс] URL: https://professorweb.ru/my/csharp/charp_theory/level3/3_1.php (дата обращения 12.12.2022).

Электронное издание. C # - Инкапсуляция [Электронный ресурс] URL: https://unetway.com/tutorial/c-inkapsulacia (дата обращения 12.12.2022);

Электронное издание. Модификаторы доступа (Руководство по программированию в C#) [Электронный ресурс] URL: https://learn.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers (дата обращения 12.12.2022).

Электронное издание. Наследование в C# и .NET [Электронный ресурс] URL: https://learn.microsoft.com/ru-ru/dotnet/csharp/fundamentals/tutorials/inheritance (дата обращения 12.12.2022).

Электронное издание. Основы наследования [Электронный ресурс] URL: https://professorweb.ru/my/csharp/charp_theory/level7/7_1.php (дата обращения 12.12.2022).

Электронное издание. Полиморфизм [Электронный ресурс] URL: https://skillbox.ru/media/code/oop_chast_4_polimorfizm_peregruzka_metodov (дата обращения 12.12.2022).

Электронное издание. Полиморфизм для начинающих [Электронный ресурс] URL: https://habr.com/ru/post/37576 (дата обращения 12.12.2022).

Электронное издание. Полиморфизм [Электронный ресурс] URL: http://www.energyed.ru/Inform/CSharpCh19 (дата обращения 12.12.2022).

Просмотров работы: 16