|
|
Конструкции объектно-ориентированного программирования в языках программирования C++,C#.Net,Deplhi,VFP,Transact-SQL,PL-SQL,VBScript,JavaScript,JScript,Visual Basic9.Конструкции объектно-ориентированного программирования.Введение
Объектно-ориентированное программирование самый совершенный на данный момент способ программирования, но и наиболее сложный для изучения программистом. Какие преимущества у объектно – ориентированного программирования? Их довольно много, недостатки у него – он довольно сложен, как для изучения программиста, так и по конструкциям исходного кода, кроме того, объектно – ориентированные программы требуют, как правило, большие ресурсов, чем обычные программы. Достоинств у него намного больше:
Он наиболее похож на обычное человеческое мышление и проектирование ученными различных изобретений. Суть такого программирования в том, что сначала программист реализует самый общий класс программы, который содержит лишь наиболее общие сведения, из него наследуются классы, описывающие в общем определенную часть программы, и так до тех пор пока не будут реализованы классы, описывающие все подробности программы. Например, группа ученых проектирует новые виды самолетов. Сначала она создает, пусть не осознано, проект некого абстрактного самолета. Т.е. говорит самолет имеет фюзеляж, мотор, кабину управления, крылья, может выполнять действия взлет с земли, полет и посадка, абстрактный самолет имеет параметры масса, грузоподъемность, скорость. Естественно, такой абстрактный самолет построит нельзя, так как у него определено только что должно быть, но нет конкретных сведений, в программирование создание из одного более общего класса нескольких классов, у которых добавлены новые члены или реализованы старые (например, на данном этапе может быть известна требуемая грузоподъемность) называется наследованием. А если в классе реализована часть параметров, а другая часть не реализована такой класс называется виртуальным, а не абстрактным классом. И так далее, например можно грузовые самолеты разделить на реактивные и винтовые. В результате будут созданы проекты конкретных самолетов, у которых известны все параметры, например масса или максимальная скорость, как он будет выполнять взлет или посадку. Сам класс это только макет или проект самолета. Пока самолет не будет построен от макета пользы не будет. Создание "самолета" в программирование называется создать объект данного класса, так как сам класс это всего лишь макет самолета. Обычно можно создавать любое количество объектов класса, но программист может при создании класса запретить создавать более одного объекта класса, например если класс, описывает Васю Пупкина из соседнего подъезда,то нет смысла делать несколько таких классов. Кроме всего прочего при определение класса можно запретить от него наследовать, например конструкция самолета устарела и модернизировать его бессмысленно. При проектирование самолета конструкторы могут описать действия, которые необходимы при его сборке и действия, которые необходимо выполнить при его утилизации. Это так называемые в программирование конструкторы и деструкторы соответственно. Кроме того, такой сложный проект, как проектирование самолета, не выполняет одна группа, а несколько. Скажем мотор разрабатывает одна группа, аэродинамика другая, кабину управления третья, дизайн - четвертые. В программировании аэродинамика, мотор, кабина управления и дизайн это отдельные классы, которые вложены в класс самолет (т.е. является частью класса самолет). Один самых важных принципов ООП инкапсуляция(другое название принцип безопасности данных).Под безопасностью здесь понимается не защита данных от кражи данными злоумышленниками, а защита от случайного изменения. Например, ученным из группы разработки дизайна нельзя давать возможность в ход разработки мотора, а ученным, разрабатывающих мотор не должны вмешиваться в разработку крыла самолета. Так же летчикам не нужно иметь возможность изменять все параметры работы мотора, а не а только необходимые для полета. Например, при проектировании конструкции аэродинамики необходимо знать только тягу и грузоподъемность мотора. При проектировании дизайна салона необходимо только знать длину салона и количество пассажиров. Поэтому принцип инкапсуляции в том что каждый класс скрывает методы и свойства для внутреннего пользования и разрешать использовать только необходимые другим классам методы и свойства. В программирование после создания объекта они начинают "жить" своей жизнью, у них можно изменять свойства и вызывать методы, например созданный самолет начинает летать, у него постоянно меняется количество пассажиров на борту, скорость полета, масса перевозимого груза и т.д., он выполняет методы взлет, снижение, поворот, посадка. Но существуют свойства и методы общие для всех самолетов данной модели, например количество наград, присужденных данной модели, или тестирование модели самолета в аэродинамической трубе, такие методы и свойства называются статическими. Наследование. Суперклассы.
Одно из главных преимуществ объектно-ориентированного программирования является концепция наследования. Можно из любого класса получить новый, добавив несколько новых членов и унаследовав класс. Если классы похожи и имеют общих членов можно создать класс, в который войдут общие члены, и унаследовав оба класса от него. Как правило, классы всегда разрабатывают начиная от самого общего, включающего только одинаковые члены классов, и далее создаются класс унаследованные от главного и включающие общие члены только определенной группы классов. Потом более мелкие групп классов и так до тех пор пока не будет реализован каждый класс. Кроме наследования классов существует наследование интерфейсов. Причем если множественное наследование классов разрешено только в языке С++, а множественное интерфейсов разрешено в любом языке, где есть интерфейсы.
Интерфейс
Интерфейс - это шаблон класса, в нем нельзя определять свойства и описывать тело класса. Зачем нужны шаблоны? Дело в том, что преимущество ООП в том, что классы могут разрабатывать различными программистами и даже разными организациями в разных странах. Шаблоны это стандарт, такой например как расстояние между рельсами железнодорожной дороги. Скажем один программист пишет класс архивирования файлов, и позволят любому другому программисту добавить новый способ архивирования описав указанный им интерфейс с методами архивирования и разархивирования файла. Например, в технологии Com все построено на интерфейсах и они позволяют одной программе легко управлять и взаимодействовать с другой программой. Например,с помощью этой технологии можно из вашей программы передать данные в Word, отформатировать данные и например распечатать.
Видимость классов, методов и полей. Модификаторы.
Главная возможность ООП это ограничение видимости методов и полей. В ООП необходимо скрывать все члены которые не должны использовать другие классы. Это резко уменьшает количество ошибок, резко сокращает время отладки, поиска ошибки и позволяет легче изменять программы. Есть ещё одно преимущество ограничения видимости в том что если вы разработали класс, и не важно кто и как использует этот класс скрытые поля и методы можно изменять как угодно, это не никак не нарушит работу других классов. Программист должен следить только, чтобы не менялись публичные члены. Т.е. реально класс это некая виртуальная микросхема, у которой есть контакты входа и выхода (публичные члены),а все что происходит внутри и структура микросхемы это черный ящик, известный разработчикам микросхемы и до тех пор пока она выполняет свою задачу никого не касается. Нельзя позволять работу с данной "микросхемой", иначе, чем через заданные контакты. Есть несколько видов видимости членов класса (перечислим в порядке уменьшения видимости): 1)Публичный. Публичные члены доступны любому классу в программе. 2)Модульный. Такие члены доступны классам одного модуля или сборки. З)Дружественный. Дружественные члены доступны классам вложенным в данный класс, классам, унаследованных от данного класса и классам, объявленным как классы - друзья данного класса. 4)Защищенный.Такие члены доступны только членам самого класса или классам унаследованным от данного класса. 6)Приватный. Члены доступны только внутри самого класса.
Константные члены классов.
Иногда бывают поля, которые после создания классов никогда не меняются рекомендуется всегда объявлять их с модификатором константности, тогда можно гарантировать, что эти поля случайно не будут изменены, и такие поля называются константными. Константные методы это методы не изменяющие поля класса. В некоторых языках можно объявить поля, которые может изменять константная функция. Создание и удаление объектов. Конструкторы и деструкторы.
Класс это только некоторый шаблон или проект, до тех пор пока не будет создан объект класса, класс будет бесполезным (за исключением использования статических членов классов). При создании класса можно задать код, который выполниться сразу после создании класса, такой код находиться в специальном члене класса называемом конструктором. Можно задать параметры конструктора и даже создать несколько конструкторов с разными параметрами. Деструкторы это член класса, выполняющийся при удалении класса, он не имеет параметров и всегда один. В системах .Net и Java классы удаляются автоматически, как только не остается ни одной переменной указывающей на этот класс, удаление класса вручную в языках этих систем не разрешается. Статические члены.
Статические члены это члены, которые общие для всех классов и к ним можно обращаться используя имя классов даже, если не создавался объектов.
Например, производитель выпускает новую модель сотового телефона (модель телефона - класс) и он создает страницу в Интернете, посвященную данной модели телефона и выпускает программу-эмуллятор данной модели, даже если ещё не был создан ни один действующий телефон данной модели. Т.е. если представить новую модель телефона как класс, то реально созданные телефоны будут объектами данного класса, а действия получить данные о телефоне с сайта производителя и проверить программу для мобильного телефона на эмуляторе будут статическими методами, а скажем сведения о найденных ошибках телефона будет статическими полями. Естественно статические методы могут вызывать только также статические методы и статические поля класса.(Ну никак сайт к примеру не сможет влиять на параметры какого -либо реального телефона).
|
Ваш комментарий
Добавить эту поисковую систему в Ваш Google Bar Разделы учебника