Файл: Разработка программы вычисления площади простых фигур.pdf
Добавлен: 28.03.2023
Просмотров: 265
Скачиваний: 4
Введение
Объектно-ориентированное программирование
Для начала я хотела бы разобраться в основах ООП
ООП – это постановка процесса программирования «с ног на голову», то есть это целый набор концепций и идей, позволяющих осмыслить задачу, стоящую при разработке компьютерной программы, а затем найти путь к её решению более эффективным, а значит, и более лёгким путём.
В настоящем объектно-ориентированном языке все элементы так называемой предметной области выражаются через концепцию объектов. Если мы обдумываем стоящую перед нами проблему, то не оперируем понятиями «структура», «пакет данных», «вызов функций», «указатели», ведь привычнее применять понятие объектов. Так как эта технология ориентирована на создание уже достаточно больших проектов, хотя отдельные части проекта (например, методы классов) всё равно разрабатываются в рамках традиционной технологии структурного программирования. Поэтому, на мой консервативный взгляд, чтобы почувствовать преимущества технологии ООП, надо иметь опыт разработки проектов определенной сложности в традиционной технологии;
Так что же такое объект и для чего он нужен?
Понятие объекта. Развитие структурного и событийного программирования способствовало:
1.Увеличению производительности труда программистов.
2. Уменьшению сроков создания приложения объемов в сотни тысяч строк.
Однако этого стало недостаточно для эффективной работы человека, и потребовались новые технологии разработки программ.
В начале 80-х годов в программировании появилось новое направление, основанное на понятии объекта. До этого разрозненность в программе данных и методов их обработки накладывала на возможность создания больших систем некоторые (основные) ограничения.
Возникновение возможности создания объектов в программах качественного повлияло на увеличение производительности труда программистов.
Произошли существенные изменения:
Максимальный объем приложений, которые стали доступны для создания группой программистов из 10 человек, за несколько лет возросло до миллионов строк кода.
Также появилась высокая надежность программ.
Возникновение повторного использования ранее созданных объектов в других задачах.
Базовые характеристики реальных объектов окружающего мира:
- Обладают набором свойств.
- Способны различными методами изменять эти свойства.
3. Реагируют на события, происходящие как в окружающем мире, так и внутри самого объекта.
Именно так в языках программирования и реализовано понятие объекта как совокупность свойств (структур данных, характерных для данного объекта), методов их обработки (программ изменения свойств) и событий, на которые данный объект может реагировать, и которые приводят, как правило, к изменению свойств объекта.
Возникновение возможности создания объектов в программах качественного повлияло на увеличение производительности труда программистов.
Существенные изменения:
1. Максимальный объем приложений, которые стали доступны для создания группой программистов из 10 человек, за несколько лет возросло до миллионов строк кода.
2. Появилась высокая надежность программ.
3. Возникновение повторного использования ранее созданных объектов в других задачах.
Объект, метод, класс: определения и свойства
Синтаксическое определение объекта и класса - структура со встроенными функциями. Структурированная переменная со встроенными в нее функциями идеально подходит под определение объекта. Не нужно пытаться изобретать велосипед, достаточно назвать вещи своими именами.
Основные (базовые) типы данных реализованы в языке C#?
В языке C# реализованы следующие базовые типы данных:
- Целые типы: sbyte, byte, short, ushort, int, uint, long, ulong.
- Типы, в которых сохраняются данные с плавающей запятой (соответствуют вещественному типу): float, double, decimal.
- Символьный тип: char.
- Логический тип: bool.
- Строчный тип: string.
Также в C# есть следующие целочисленные типы данных:
sbyte, byte, short, ushort, int, uint, long, ulong.
Как в программе описать переменную с именем d целого типа int?
Ответ:
int d;
После такого описания под переменную с именем d будет выделено 4 байта памяти компьютера.
Как в переменную d целого типа ulong занести число 398?
Для присвоения переменной некоторого значения используется оператор присваивания, который обозначается оператором ‘=’.
Ответ 1. Присваивание значения переменной после ее описания.
ulong d;
d = 398;
Ответ 2. Присваивание значения переменной во время ее описания (начальная инициализация).
ulong d = 398;
. Как программно определить размер переменной заданного типа?
Чтобы определить размер переменной используется операция sizeof():
int d;
d = sizeof(sbyte); // d = 1
d = sizeof(short); // d = 2
d = sizeof(int); // d = 4
d = sizeof(long); // d = 8
Изменение границ в Windows Forms
При определении внешнего вида и поведения формы Windows Forms можно выбрать из нескольких стилей границы. Изменив FormBorderStyle свойство, можно управлять поведением изменения размеров формы. Кроме того, параметр FormBorderStyle влияет на способ отображения строки заголовка и кнопок, которые на нем могут отображаться. Дополнительные сведения см. в разделе FormBorderStyle.
В Visual Studio предусмотрена расширенная поддержка данной задачи.
Установка стиля границ формы Windows Forms программными средствами
Задайте для свойства FormBorderStyle нужный стиль. В следующем примере кода задается стиль границы формы DlgBx1 для FixedDialog.
C#Копировать
DlgBx1.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
Кроме того, если вы выбрали стиль границы для формы, которая предоставляет необязательные кнопки сворачивания и развертывания, можно указать, должна ли работать одна или обе эти кнопки. Эти кнопки полезны в тех случаях, когда требуется точно управлять взаимодействием с пользователем. Кнопки сворачивания и развернуть включены по умолчанию, и их функциональность управляется в окне Свойства.
Работа с десятичными типами
Вы уже ознакомились с базовыми числовыми типами в C# — целыми числами и числами типа double. Осталось изучить еще один тип: decimal. Тип decimal имеет меньший диапазон, но большую точность, чем double. Например:
C#Копировать
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
Обратите внимание, что диапазон меньше, чем для типа double. Вы можете убедиться в повышении точности при использовании типа decimal, выполнив следующий код:
C#Копировать
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
Суффикс M возле чисел указывает, что для константы должен использоваться тип decimal. В противном случае компилятор предполагает тип double.
Структурированная переменная – это объект, функции, встроенные в структурированный тип – это методы класса, а само определение структурированного типа (включающее и определение встроенных функций) – есть класс.
Класс. Все объекты могут иметь аналогичную структуру и отличаться только значениями свойств. В таких случаях в программе создается класс. Класс — это новый тип, основанный на единой структуре объекта (по аналогии с тем, как создаются новые типы для структур данных). Экземпляр класса - каждый конкретный объект, имеющий структуру данного класса.
В Visual Basic для описания нового класса используется конструкция:
Class ИмяКласса
описание класса
End Class.
Стандартные типы данных Visual Basic хорошо вписываются в терминологию объектов и классов.
Например, описание:
Dim s As String
Dim i As Integer.
Здесь создается объект s, принадлежащий классу String, и объект i, принадлежащий классу Integer. Переменные s и i — это объекты (как модели сущностей "строка" и "целое число"), а типы данных String и Integer - классы, к которым данные объекты относятся. Эти классы определяют диапазон возможных состояний объекта и его поведение. Внутреннее состояние объекта, относящегося к классу Integer, характеризуется целым числом; объект же, относящийся к классу String, характеризуется символьной строкой. То же можно сказать и о поведении: принадлежность двух объектов классу Integer дает возможность их складывать, вычитать, перемножать и делить; принадлежность классу String не гарантирует, что можно производить арифметические действия, зато определяет операцию конкатенации ("приписывания" одной строки в конец другой), которая не работает в случае объектов класса Integer.
Таким образом, любой тип данных, используемый в языке Visual Basic, подходит под определение класса. Верно и то, что, создавая новый класс, мы тем самым создаем свой собственный тип данных. После этого можно описывать переменные, принадлежащие новому типу данных (то есть создавать отдельные объекты, экземпляры класса), и оперировать ими в рамках возможностей, заданных при описании класса.
Объектно-ориентированное программирование базируется на трех ключевых концепциях - инкапсуляция, наследовании и полиморфизме.
Наследование. Класс представляет собой совокупность связанных между собой данных, методов их обработки и событий. Важнейшая характеристика наследования - возможность создания на его основе новых классов всех его свойств и методов и добавлением собственных. Базовый класс — это класс, не имеющий предшественника. С позиции наследования класс может быть дочерним или родительским. Дочерний класс наследует характеристики родительского класса, включая свойства, методы, поля данных и события.
Например, класс «управленцы», приведенный на следующей схеме, наследует все члены родительского класса «персонал» за исключением метода «управлять», который создается заново, замещая исходный «работать».
Наследование позволяет создавать новые классы, повторно используя уже готовый исходный новый код и не траты времени на его переписывание.
То есть, нет необходимости в повторном программировании. Класс, созданный на основе родительского, может быть изменен за счет добавления новых членов и адаптирован по определенным требованиям, так как унаследованные методы могут изменяться.
В Visual Basic при определении нового класса, наследуемого от существующего, используется ключевое слово Inherits. Например:
Public Class NewChildClass
Inherits MyClass
Этот код создает новый компонент, который наследует все свойства, методы, события и поля класса MyClass. Параметры компонента могут быть расширены по сравнению с исходным классом, чтобы обеспечить необходимые качества создаваемых объектов.
Полиморфизм. В большинстве случает методы базового класса у классов - наследников приходиться переопределять - объект класса «управленец» выполняет метод «управлять» совсем не так, как объект класса «рабочий».
Поэтому, существует полиморфизм, который позволяет нескольким классам, имеющим различные имена, обращаться к одним и тем же методам и свойствам.
Например, если для всех людей, занимающихся делом, выполняется метод «работать», можно написать процедуру таким образом, чтобы она относилась к любым из этих объектов, не заботясь о типе каждого из них. На приведенной ниже схеме представлен метод «работать», предназначенный для двух объектов, созданный на базе двух различных классов.