Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Понятие ООП. Причины появления ООП.Стр 1 из 2Следующая ⇒
Общие понятия ООП. Понятие ООП. Причины появления ООП. Объектно-ориентированное программирование (ООП) – основная парадигма программирования, которая, по всей видимости, сохранится и в течение текущего десятилетия (Парадигмы в программировании определяют как проводить вычисления, как работа, выполняемая компьютером должна быть структурирована и организована). Она является результатом тридцатилетнего опыта и практики, которые берут начало в языке Simula 67 и продолжаются в языках SmallTalk, С++, Object Pascal, Java, C# и др. ООП – это стиль, который фиксирует поведение реального мира так, что детали его составных частей скрыты, и тот, кто решает задачу, мыслит в терминах, присущих самой задаче, а не языку программирования. Рассмотрим основные этапы развития программирования, которые помогают лучше понять взаимосвязь структурного подхода, модульного программирования и ООП. Со временем программы стали расти, чтобы избежать ошибок появилась концепция ООП, которая позволяет мыслить в терминах задачи, а не языка, это спасает от многих ошибок
Концепции ООП. Инкапсуляция В последнее время принято считать, что объектно-ориентированный подход базируется на трех китах: инкапсуляции, наследовании и полиморфизме Инкапсуляция свойств объекта. Инкапсуляция (дословно «заключение в оболочку») представляет собой локализацию в рамках объекта всех данных об объекте, которые характеризуют его внутреннюю структуру и поведение с запрещением непосредственного доступа к тем данным, которые нецелесообразно (или даже опасно) предоставлять в распоряжение пользователя. Так, например, объект класса счетчик может содержать атрибут целого типа текущее значение, и, по всей видимости, было бы опасно дать пользователю возможность менять это значение произвольным образом, добавляя к нему любое целое значение или вычитая его. Отношения частей к целому и к другим частям более ясны, когда все связано вместе, в одной оболочке. Это качество называется инкапсуляцией. Связывая код и описания данных вместе, объект помогает упорядочить их. Если требуется получение значения одного из атрибутов объекта, то вызывается метод, принадлежащий этому объекту, который возвращает значение нужного атрибута. Разумеется, это возможно только тогда, когда такой метод представлен в описании объектного типа. Аналогично, чтобы задать значение атрибута, вызывается метод, который присваивает этому атрибуту новое значение. В С++ атрибуты объекта называются элементами данных, или полями, а операции – компонентными функциями, или методами. В Java и C# они соответственно называются полями и методами. Кроме того, понятие «атрибут» в C# имеет другой смысл. Поэтому в дальнейшем мы будем считать синонимами понятия элемент данных и поле, с одной стороны, и операция, компонентная функция и метод – с другой стороны. Компонентная функция, не вырабатывающая другого результата, кроме изменения состояния объекта, иногда называется процедурой. Разные объектно-ориентированные языки программирования решают проблему инкапсуляции по-разному. Так, например, в SmallTalk все поля объекта (внутренние переменные) скрыты от пользователя и доступны только в телах методов данного класса, в то же время все методы объекта открыты пользователю. Более гибкая схема реализована в С++, Java и C#. В этих языках каждый компонент объекта (поле или метод) может помечаться одним из спецификаторов доступа private, protected или public. Компонент, помеченный как private (скрытый), может использоваться только в телах методов данного класса, компонент, помеченный как protected (защищенный), может дополнительно использоваться в наследниках данного класса (т.е. в телах их методов), а компонент, помеченный как public (открытый), может использоваться в любом месте программы. Такое гибкое разграничение доступа к компонентам объекта позволяет избежать нежелательных искажений свойств объекта и допустить эффективный доступ к ним, когда это необходимо (прямой доступ к элементу данных объекта обычно более эффективен, чем доступ к нему посредством метода). Доступ к открытым компонентам объекта осуществляется посредством одной или нескольких операций выбора компонента. Например, в С++ есть операции выбора «.» и «-> ». Левым аргументом первой операции является имя объекта, а второй – указатель на объект. В Java и C# нет различия между этими понятиями, поэтому там есть только одна операция «.». Правый аргумент операции – это всегда имя компонента с возможными аргументами, если этот компонент – функция. Концепции ООП. Наследование В последнее время принято считать, что объектно-ориентированный подход базируется на трех китах: инкапсуляции, наследовании и полиморфизме Наследование свойств. Наследование есть свойство классов порождать своих потомков и наследовать свойства (атрибуты и операции) своих родителей. Класс-потомок автоматически наследует от родителя все атрибуты и операции, а также может вводить новые атрибуты и операции и даже заменять (переопределять) операции родительского класса. Наследование в ООП позволяет адекватно отражать родственные отношения между объектами предметной области. Если класс В обладает всеми свойствами класса А и еще имеет дополнительные свойства, то класс А называется базовым (предком, родительским классом), а класс В – подклассом (наследником, производным классом) класса А. Процесс построения иерархии классов очень напоминает процесс построения генеалогических деревьев в реальном мире. Наследование свойств только одного базового класса называется одиночным (простым) наследованием, а параллельное наследование свойств сразу нескольких базовых классов называется множественным (кратным) наследованием. В С++ возможны оба варианта наследования классов, а в Java и C# – только одиночное наследование, для реализации множественного наследования там применяется другой механизм. Механизм наследования упрощает процесс построения иерархии классов, что сокращает затраты на написание новых классов на основе существующих и обеспечивает исключительную гибкость системы классов. Программист обычно определяет базовый класс, обладающий наиболее общими свойствами, а затем создает последовательность потомков, которые обладают своими специфическими свойствами. В результате получается иерархия наследования свойств классов. Базовые классы, или корни подобных деревьев, часто обладают такими абстрактными свойствами, что сами в программах не используются (например, класс фигура), они необходимы лишь для порождения требуемых классов. Правильный выбор корня обеспечивает удобство «выращивания дерева», т.е. простоту построения библиотеки классов. Применение правила ООП «наследуй и изменяй свойства классов» хорошо согласуется с поэтапным подходом к разработке и созданию больших программных систем. Пример иерархии классов: фигура -> точка -> круг -> цилиндр.
Концепции ООП. Полиморфизм В последнее время принято считать, что объектно-ориентированный подход базируется на трех китах: инкапсуляции, наследовании и полиморфизме Полиморфизм поведенческих свойств объектов. Свойство какого-либо имени программы одновременно обозначать различные сущности называется полиморфизмом этого имени. В буквальном переводе с греческого это слово означает " много форм". Понятие полиморфизма в языках программирования является одним из основополагающих, и совсем необязательно связывать его только с именами. Правомерно говорить о полиморфных знаках операций — встроенных и/или определяемых. К примеру, в операции " a + b" в зависимости от типов a и b знак операции «+» может обозначать операцию сложения целых, сложения вещественных, объединения множеств или сцепления строк (при желании можно считать, что их имя — знак " +" ). Полиморфизм проявляется и в связи с локализацией имен: одно и то же имя из разных контекстов обозначает разные сущности, а неоднозначность понимания имени ликвидируется языковыми правилами соотнесения имени с контекстом ( в различных языках возможны различные правила). Полиморфны элементы интерфейса программ – как технические ( к примеру, клавиша мыши в зависимости от позиционирования ее курсора имеет разный смысл), так и программируемые (в частности, одинаковые световые кнопки на разных панелях обозначают различные действия). Если в определении полиморфизма отказаться от одновременности, то можно считать полиморфным понятие переменной, поскольку в разные моменты выполнения программы она содержит (обозначает) различные значения. Пользуясь понятием полиморфизма, всегда нужно четко представлять механизмы благодаря которым разрешается неоднозначность связывания имени или иного обозначения с обозначаемыми сущностями. Полиморфизм переменной разрешается временем обращения к ней, полиморфизм знака операции или имени процедуры — типами параметров, контекстный полиморфизм имен при локализации — правилами экранирования имен. Объектно-ориентированные языки наряду с традиционными видами полиморфизма предлагают принципиально новые возможности такого рода. В них полиморфизм часто также определяют как способность объектов-родственников по разному осуществлять однотипные действия, т.е. однотипные действия у множества классов, связанных отношением иерархии, имеют разные формы проявления. Например, метод «нарисовать на экране» должен реализовываться по-разному для классов «точка», «круг» и «цилиндр». В ООП действия или поведение объекта определяются набором методов. Изменяя алгоритм метода в потомках класса, программист придает наследникам специфические поведенческие свойства. С понятием полиморфизма тесно связана проблема времени связывания имени операции с ее телом. Если можно определить на этапе компиляции программы, какая операция с данным именем вызывается в данной точке программы, то имеет место раннее, или статическое, связывание. Если же можно сопоставить имени операции конкретную операцию только на этапе выполнения программы, то имеет место позднее, или динамическое, связывание. Например, если мы имеем массив фигур и в цикле по этому массиву вызываем метод «нарисовать на экране», то только в процессе выполнения программы может быть установлено, какая именно фигура является данным элементом массива и, следовательно, какой метод ее рисования должен быть применен. Позднее связывание имен операций с их телами является одним из существенных свойств ООП.
Этапы ООП. Программа, решающая некоторую задачу, заключает в себе описание части мира, относящегося к этой задаче, или определенной предметной области. Описание действительности в форме взаимодействующих объектов во многих случаях естественнее, чем в форме иерархии подпрограмм, и поэтому оно облегчает программное моделирование такой предметной области. В процессе программирования в объектно-ориентированном стиле можно выделить следующие этапы: 1. Определение основных понятий предметной области и соответствующих им классов с соответствующими свойствами. Обоснование способов создания объектов. 2. Определение или формулирование принципов взаимодействия классов и взаимодействия объектов в рамках программной системы. 3. Установление иерархии взаимосвязи свойств родственных классов. 4. Реализация иерархии классов посредством механизма наследования. 5. Реализация методов каждого класса. В результате такой работы создается объектно-ориентированная среда, или библиотека классов, позволяющая решать задачи моделирования в определенной предметной области. Первые три этапа являются объектно-ориентированным анализом предметной области, а последние два – собственно объектно-ориентированным программированием. 7. Общая характеристика языка С++. С++. Язык был создан Американским ученым Бьярном Строуструпом в первой половине 80-х годов. Задачи: улучшить С поддержать абстракцию данных поддержать объектно-ориентированное программирование обеспечить максимально возможную эффективность работы программ. Улучшение С выразилось в: - контроль типов параметров - операции работы с памятью (динамич. создание и уничтожение объектов) - совмещение имен функций и операций - встраивание функций в код программы. С был взят в качестве базового языка, потому что он: - многоцелевой, лаконичный и относительно низкого уровня - отвечает большинству задач системного программирования - идет везде и на всем - может быть использован в среде программирования UNIX. Абстракция данных есть метод разработки программ с представлением в ней понятий из прикладной области как пользовательских (user-defined) типов данных. Интерфейс типа данных (спецификация) отделяется от его реализации, что - облегчает понимание программ, позволяя прямо описывать понятие в естественных для него терминах - изменять реализацию типа данных, не задевая пользователей. С++ обеспечивает абстракцию данных, поддерживая следующие понятия и возможности: - конструктор пользовательских типов class - средства управления доступом (public, private) - абстрактные классы - гарантированная инициализация и очистка объектов - пользовательские преобразования типов объектов - параметризованные (родовые) функции и типы данных - обработка исключительных ситуаций. Ключевым понятием в С++ является класс. Классы обеспечивают перечисленные выше возможности. ООП основывается на иерархической организации классов подобно тому, как устанавливается иерархия понятий в реальной жизни. В С++ оно поддерживается понятиями: - производный класс (подкласс) - виртуальная функция (подмена функций). C++ — компилируемый статически типизированный язык программирования общего назначения. Поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так инизкоуровневых языков[1]. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержкеобъектно-ориентированного и обобщённого программирования[2]. C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр). Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#. Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C. Заголовочные файлы Одним из простых способов достижения согласованности определений различных файлов является включение в исходные файлы программы заголовочных файлов с интерфейсной информацией. Директива #include " to-be-included" замещает себя содержимым файла " to-be-included", которым должен быть исходный текст на С++. Такое включение обычно делается препроцессором С++. Для включения файлов из стандартного каталога вместо кавычек используются угловые скобки " < " и " > ". Пример: #include < stream.h> // из стандартного каталога #include " myheader.h" // из текущего каталога В заголовочном файле могут содержаться: Определения типов struct point {int x, y; }; Параметризованные типы template < class T> class V; Объявления функций extern int strlen(const char*); Описания встраиваемых функций inline char get() {return *p++}; Объявления данных extern int a; Описания констант const float pi = 3.14.1593; Перечисления enum bool {false, true}; Объявления имен class Matrix; Директивы включения #include < signal/h> Определения макросов #define Case break; case Комментарии /* проверка на конец файла */ Заголовочные файлы обычно имеют суффикс.h, а файлы, содержащие функции или определения данных - суффикс.с или.cpp. 9. Особенности языка с++, не связанные с ООП. Константы, параметры по умолчанию В С++ спецификатор const может использовать для замены директивы #define. Значения объектов, которые объявлены как const не могут быть изменены. Спецификатор const определяет тип константы и позволяет компилятору убедиться, что она используется в контексте, где ее тип не вызовет конфликта. const true=1; const double pl=4*atan(1.); const int size=5000; char *const names=“FFF”; const char *Nam=“GGG”; names - это константный указатель на char, адрес не может быть изменен. Последнее объявление указывает, что строка “GGG” является константой. Указатель Nam не константа и может быть изменен. Единственное отличие констант от переменных, что после инициализации их нельзя изменить. Константы удобны в следующих случаях. Вы хотите улучшить понимание своей программы для других, ведь смысловое имя более понятно чем какое-то число. Если в вашей программе многократно используется некое число, например 7. Но в дальнейшем оно может изменится на другое. То легче один раз объявить константу и когда надо заменить один раз значение у константы. Константы Константные ссылочные типы часто используются в качестве аргументов для функций, чтобы гарантировать не изменность данных.
10. Особенности языка с++, не связанные с ООП. Комментарии, описания, inline-подстановки В С++ комментарии можно вводить одним из двух способов. • Символы /* начинают комментарий, заканчивающийся символами */. Вся эта последовательность символов эквивалентна символу пропуска (например, символу пробела). Символы // начинают комментарий, который заканчивается в конце строки, на которой они появились. Опять, вся последовательность символов эквивалентна пропуску. Символы // можно использовать для того, чтобы закомментировать символы /* или */, а символами /* можно закомментировать //. Если часто повторяется обращение к очень маленькой функции, то вы можете начать беспокоиться о стоимости вызова функции. Обращение к функции члену не дороже обращения к функции не члену с тем же числом параметров (надо помнить, что функция член всегда имеет хотя бы один параметр), и вызовы в функций в C++ примерно столь же эффективны, сколь и в любом языке. Однако для слишком маленьких функций может встать вопрос о накладных расходах на обращение. В этом случае можно рассмотреть возможность спецификации функции как inline-подставляемой. Если вы поступите таким образом, то компилятор сгенерирует для функции соответствующий код в месте ее вызова. Семантика вызова не изменяется. Вы можете указать, что вы хотите, чтобы функция была inline- подставляемой, поставив ключевое слово inline, или, для функции члена, просто включив определение функции в описание класса, как это сделано в предыдущем примере для size() и elem(). При хорошем использовании inline-функции резко повышают скорость выполнения и уменьшают размер объектного кода. Однако, inline- функции запутывают описания и могут замедлить компиляцию, поэтому, если они не необходимы, то их желательно избегать. Чтобы inline-функция давала существенный выигрыш по сравнению с обычной функцией, она должна быть очень маленькой. 11. Особенности языка с++, не связанные с ООП. Ссылки О переменной variableName говорят, что это ссылка на тип. Она определяет местоположение в памяти инициализирующего выражения Init. Ссылка – это псевдоним или альтернативное имя переменной. Ссылку можно считать неизменяемым указателем, который заранее разыменован. Рассмотрим пример: int y=16; int & x=y; printf(“x=%d\n”, x); y=12; printf(“x=%d\n”, x); Результат работы x=16 x=12 Ссылочная переменная x определяет местоположение в памяти переменной y в инициализирующем выражении int & x=y. Переменная x обрабатывается как нормальная переменная типа int. При обращении к такой переменной нет необходимости в операции снятие ссылки. Функциональный эквивалент приведенного выше примера: int y=16; int *x=& y; printf(“x=%d\n”, *x); y=12; printf(“x=%d\n”, *x); Ссылочная переменная должна быть при объявлении инициализирована. Объявление int & x; недопустимо. Ссылки часто используются как формальные параметры в функциях. Это может быть полезно для создания функций, изменяющих полученные параметры.
12. Особенности языка с++, не связанные с ООП. Перегрузка, функции Функция — это определенная группа операций с уникальным именем, которая может: 1. Вызываться по имени в любом месте программы. 2. Получать определенный набор значений из внешней программы в момент вызова. 3. Возвращать в качестве значения некоторый результат заранее заданного типа. Также функцию можно рассматривать как операцию, созданную самим разработчиком. Известный примером функции является main. Она автоматические вызывается при запуске программы. Про перегрузку не нашла
Классы и объекты Классы С++ предлагают расширение предопределенных системных типов. Класс - это определяемый пользователем тип. Каждый класс представляет уникальное множество объектов и операций над ними (методов). Класс предоставляет средства для создания, манипулирования и уничтожения таких объектов. Что представляет собой хороший класс? Нечто, имеющее небольшое и хорошо определенное множество действий. Нечто, что можно рассматривать как " черный ящик", которым манипулируют только посредством этого множества действий. Нечто, чье фактическое представление можно любым мыслимым способом изменить, не повлияв на способ использования множества действий. Нечто, чего можно хотеть иметь больше одного. В общем случае, класс представляется в следующей форме: сlass имя класса { список членов }; Члены класса Членами класса могут быть функции. • Функции-члены - это, функции которые манипулируют данными-членами класса. • Функции-члены имеют доступ ко всем полям своего класса. • Функции-члены могут быть в закрытой, защищенной и открытой части класса. • Функции-члены могут быть определены внутри или вне (С++) объявления класса. Функции-члены, определенные вне класса, могут быть сделаны inline. Функция, описанная внутри класса, является по определению встраиваемой. Синтаксис для реализации метода вне объявления класса: тип_возвращаемого_значения ИмяКласса:: ИмяМетода(Список Аргументов) { Реализация_Метода }; Обратите внимание на еще одно использование оператора разрешения контекста::, который в данном случае сообщает компилятору, что надо воспользоваться областью видимости класса. • Функции-члены могут обращаться к полям или функциям-членам, объявленным после них. • Функции-члены имеют неявно объявленную переменную this. • Функции-члены могут быть static. Такие функции могут непосредственно обращаться и изменять статические поля класса. Статические Функции-члены класса не могут быть объявлены const или virtual. К таким функциям можно обращаться через имя класса, а не через имя конкретного экземпляра объекта. • Функции-члены могут быть объявлены как const, что не позволяет им изменять значение и возвращать неконстантную ссылку или указатель на любое поле класса. Такие Функции-члены не могут быть статическими. 2.2.1.2 Данные члены и управление доступом к элементам классов • Данные-члены - это набор взаимосвязанной информации, возможно различных типов, объединенной в один объект. • Данные-члены могут находиться в закрытой (private), защищенной (protected) или открытой (public) части класса. • Данные-члены могут иметь статический класс памяти (static). Поля, имеющие статический класс памяти, совместно используются всеми объектами класса. К ним возможен доступ через имя класса ( с использованием операции разрешения доступа), а не через контекстный объект класса. Статические поля могут быть инициализированы; если нет, то инициализируется значением ноль. Данные-члены могут быть объявлены как const. Константные данные должны быть инициализированы в каждом определении конструктора. Имена полей и начальные значения заключаются в скобки, отделяются от списка аргументов конструктора двоеточием. Описание класса Описание класса начинается с ключевого слова class. Список членов класса определяет собственные элементы класса. При описании членов классов возможно указание атрибутов управления доступом (модификаторов доступа) к элементам классов. Такими атрибутами являются: • public: члены класса видны извне класса • protected: члены класса видны в производном классе • private: соответствующие элементы могут использоваться только внутри класса По умолчанию элементы класса имеют тип private. Указанный в описании модификатор доступа распространяется на все последующие определения, пока не встретится другой модификатор. Поскольку пользователя часто интересует открытая часть класса, то в описании она обычно располагается первой.
Параметризованные функции Исключения и их обработка. Исключением будем называть такие изменения в условиях выполнения алгоритма, которые вызывают остановку процесса исполнения алгоритма, чтобы могла быть выполнена специальная подпрограмма, предназначенная для обработки ошибки. Программа считается нейтральной по отношению к исключениям, если при возникновении исключительной ситуации внутри метода класса и ее не обрабатывает, то прерывает работу метода и передает управление методу (контейнерного) класса, который вызвал данный метод до тех пор, пока не встретится метод, который обработает исключение. Язык C++ определяет стандарт обслуживания исключений в рамках ООП. C++Builder предусматривает специальные механизмы для обработки исключений (ошибок), которые могут возникнуть при использовании Библиотеки Визуальных Компонент. C++Builder также поддерживает обработку исключений самой операционной системы и модель завершения работы приложения. Когда программа встречает ненормальную ситуацию, на которую она не была рассчитана, можно передать управление другой части программы, способной справиться с этой проблемой, и либо продолжить выполнение программы, либо завершить работу. Переброс исключений (exception throwing) позволяет собрать в точке переброса информацию, которая может оказаться полезной для диагностики причин, приведших к нарушению нормального хода выполнения программы. Вы можете определить обработчик исключения (exception handler), выполняющий необходимые действия перед завершением программы. Обслуживаются только так называемые синхронные исключения, которые возникают внутри программы. Такие внешние события, как нажатие клавиш Ctrl+C, не считаются исключениями. Блок кода, который может сгенерировать исключение, начинается ключевым словом try и заключается в фигурные скобки. Если блок try обнаруживает исключение внутри этого блока, происходит программное прерывание и выполняется следующая последовательность действий: 1. Программа ищет подходящий обработчик исключения. 2. Если обработчик найден, стек очищается и управление передается обработчику исключения. 3. Если обработчик не найден, вызывается функция terminate для завершения приложения. Блок кода, который обрабатывает возникшее исключение, начинается ключевым словом catch и заключается в фигурные скобки. По меньшей мере один кодовый блок обработчика исключения должен следовать непосредственно за блоком try. Для каждого исключения, которое может сгенерировать программа, должен быть предусмотрен свой обработчик. Обработчики исключений просматриваются по порядку и выбирается обработчик исключения, тип которого соответствует типу аргумента в операторе catch. При отсутствии в теле обработчика операторов goto, выполнение программы будет возобновлено, начиная с точки, следующей за последним обработчиком исключений данного блока try. Если необходимо обработать возможное исключение фрагмент программы заключается в блок try. Блок try имеет вид try { // текст программы } В случае возникновения исключения управления передается обработчикам исключений catch или __finally. Операторы внутри catch выполняются только в случае возникновения исключения, т.е., если исключения не случилось – его операторы не выполняются вообще. В C++Builder обработчик исключений catch лучше применять в виде catch(const Exception *E) { ShowMessage(AnsiString(E-> ClassName())+ E-> Message); } или catch(…) { ShowMessage(“Что-то случилось”); } Операторы внутри __finally выполняются всегда, в т.ч. и при возникновении исключения. __finally { // выполнится всегда } Возбуждение исключений производится оператором throw и функцией Abort(). В среде C++ Builder лучше использовать возбуждение исключений в виде throw (new MyException(< текст> )), где MyException – это класс Exception или производный от него. Классы Object, Component. объект Поддерживает все классы в иерархии классов.NET Framework и предоставляет услуги низкого уровня для производных классов. Это конечная базовый класс всех классов в.NET Framework; это корень иерархии типов. общественности: Object () общественности: виртуальный строки ^ ToString () Возвращает строку, которая представляет текущий объект. Object () Позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как объект будет утилизирован в процессе сборки мусора.
TimeSpan Представляет интервал времени. DateTime Представляет момент времени, как правило, выражается в виде даты и времени суток. общественности: DateTime (INT год, INT месяц, Int день) общественности: недвижимость DateTime Дата {DateTime Get (); } Возвращает дату компонент данного экземпляра. общественности: недвижимость TimeSpan TimeOfDay {TimeSpan получить (); } Получает время суток для этого экземпляра. общественности: статическая DateTime собственностью Теперь {DateTime получить (); } Получает объект DateTime, который устанавливается на текущую дату и время на данном компьютере, выраженное в местном времени. общественности: статическая DateTime Разбор (String ^ с) Преобразует заданное строковое представление даты и времени его DateTime эквиваленте.
компонент Обеспечивает функциональность, необходимую для всех компонентов. общественности: Компонент () общественности: недвижимость IContainer ^ Контейнер {IContainer ^ Get (); } Получает IContainer, который содержит компонент. общественности: виртуальное имущество ISite ^ сайта {ISite ^ получим (); недействительными набор (ISite ^ стоимость); } Компонент может иметь ISite, если он был добавлен к IContainer и IContainer назначает ISite к нему.IContainer несет ответственность за присвоение ISite к компоненту. Изменение значения ISite компонента не обязательно менять имя сайта Компонент предназначен.Недвижимость Сайт должен быть установлен только с помощью IContainer. Значение свойства пустая ссылка (Nothing в Visual Basic), если удалении компонента из его IContainer. Назначение пустая ссылка (Nothing в Visual Basic) на это имущество не обязательно удалить компонент из IContainer. Компонент может или не может иметь имя. Если компонент дается имя, имя должно быть уникальным среди других объектов компонента в его IContainer.ISite хранит имя компонента; Таким образом, вы можете только назвать компонента, если он имеет ISite, связанный с ним. защищены: недвижимость BOOL DesignMode {BOOL получить (); } Получает значение, указывающее, является ли Компонент находится в режиме проектирования. общественности: виртуальный недействительными Dispose () Герметичный Освобождает все ресурсы, используемые компонентом. общественности: виртуальное событие EventHandler ^ Disposed { недействительными добавить (EventHandler ^ значение) опечатаны; недействительными удалить (EventHandler ^ значение) опечатаны; } Добавляет обработчик событий, чтобы слушать, размещенного события на компоненте.
Общие понятия ООП. Понятие ООП. Причины появления ООП. Объектно-ориентированное программирование (ООП) – основная парадигма программирования, которая, по всей видимости, сохранится и в течение текущего десятилетия (Парадигмы в программировании определяют как проводить вычисления, как работа, выполняемая компьютером должна быть структурирована и организована). Она является результатом тридцатилетнего опыта и практики, которые берут начало в языке Simula 67 и продолжаются в языках SmallTalk, С++, Object Pascal, Java, C# и др. ООП – это стиль, который фиксирует поведение реального мира так, что детали его составных частей скрыты, и тот, кто решает задачу, мыслит в терминах, присущих самой задаче, а не языку программирования. Рассмотрим основные этапы развития программирования, которые помогают лучше понять взаимосвязь структурного подхода, модульного программирования и ООП. Со временем программы стали расти, чтобы избежать ошибок появилась концепция ООП, которая позволяет мыслить в терминах задачи, а не языка, это спасает от многих ошибок
Концепции ООП. Инкапсуляция В последнее время принято считать, что объектно-ориентированный подход базируется на трех китах: инкапсуляции, наследовании и полиморфизме Популярное:
|
Последнее изменение этой страницы: 2016-07-14; Просмотров: 1783; Нарушение авторского права страницы