Главная » Просмотр файлов » Сравнение языков программирования (esyr)

Сравнение языков программирования (esyr) (1161143), страница 8

Файл №1161143 Сравнение языков программирования (esyr) (Сравнение языков программирования) 8 страницаСравнение языков программирования (esyr) (1161143) страница 82019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 8)

Кому интересно, брал здесь.Наследование типов и классов[править]C# и Java[править]В C# и Java можно в дочернем классе сослаться на экземпляр родительского с помощ ью ключевых слов base (C#) и super (Java).Кроме того, в этих языках есть ключевые слова sealed (C#) и final (Java). Они могут находиться в заголовке[10] метода (в случае C# — только виртуального) иликласса (final также может находиться в описании поля, но это «другая песня»).open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comВ C# sealed в заголовке виртуального метода означает запрет перегрузки (англ. override) метода в производных классах.

В заголовке класса — запретнаследования от данного класса.В Java final в заголовке метода означает, запрет замещ ения (скрытия, англ. hide) или перегрузки (англ. override) метода в производных классах. В заголовкекласса — запрет наследования от данного класса.ADA[править]Наследование в Аде происходит путем создания нового пакета и расширения в нем базовой записи:package Person istype Object is tagged private;procedure Put (O : Object);privatetype Object isrecordName: String (1 .. 10);Gender : Gender_Type;end record;end Person;with Person;package Programmer istype Object is new Person.Object with private;privatetype Object isrecordabuility: Language_List;end record;end Person;ООП в Аде является вполне полноценным c Динамическим полиморфизмом, RTTI , абстрактными типами и интерфейсами.Динамический полиморфизм[править]В объектно-ориентированных языках программирования динамический полиморфизм реализуется с помощ ью наследования классов и виртуальных функций и/или виртуальных членов.

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

Этоназывается поздним связыванием.Позднее связывание есть в C++, C#, Java, Delphi, Ада 95, Оберон-2.C#[править]В C# к динамическому полиморфизму имеют отношение 3 важных ключевых слова (модификатора):1. virtual2. override3. newvirtual[править]Ключевое слово virtual используется для изменения объявлений методов, свойств, индексаторов и событий и разрешения их переопределения в производномклассе. Например, этот метод может быть переопределен любым производным классом. Модификатор virtual нельзя использовать с модификаторами static,open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comabstract, private или override.public virtual double Area(){return x * y;}override[править]Модификатор override требуется для расширения или изменения абстрактной или виртуальной реализации унаследованного метода, свойства, индексатора илисобытия.

Иными словами, модификатор override расширяет метод базового класса. Метод, переопределенный c использованием override, называетсяпереопределенным базовым методом. Переопределенный базовый метод должен иметь ту же сигнатуру, что и метод override. Невиртуальный или статическийметод нельзя переопределить. Переопределенный базовый метод должен иметь тип virtual, abstract или override. Объявление override не может изменитьуровень доступа метода virtual. Методы override и virtual должны иметь одинаковый модификатор уровня доступа. Модификаторы new, static и virtual нельзяиспользовать для изменения метода override. Переопределяющ ее объявление свойства должно задавать такие же модификаторы уровня доступа, тип и имя, каки имеющ иеся у унаследованного свойства, а переопределенное свойство должно иметь тип virtual, abstract или override.class BaseClass{public virtual void Method1(){Console.WriteLine("Base - Method1");}public void Method2(){Console.WriteLine("Base - Method2");}}class DerivedClass : BaseClass{public override void Method1(){Console.WriteLine("Derived - Method1");}public void Method2(){Console.WriteLine("Derived - Method2");}}// ...BaseClass bc = new BaseClass();DerivedClass dc = new DerivedClass();BaseClass bcdc = new DerivedClass();bc.Method1();bc.Method2();dc.Method1();dc.Method2();bcdc.Method1();bcdc.Method2();// Output:// Base - Method1// Base - Method2// Derived - Method1// Derived - Method2// Derived - Method1// Base - Method2new[править]Модификатор new скрывает члены, унаследованные от базового класса.

При сокрытии унаследованного члена его производная версия заменяет версиюбазового класса. (На самом деле, члены можно скрыть и без модификатора new, но в результате возникнет предупреждение. Если же для явного скрытия членаopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comиспользуется new, то модификатор отключает вывод предупреждений и документирует тот факт, что производная версия предназначена для замены.class BaseClass{public void Method1(){Console.WriteLine("Base - Method1");}public void Method2(){Console.WriteLine("Base - Method2");}}class DerivedClass : BaseClass{public override void Method1(){Console.WriteLine("Derived - Method1");}public new void Method2(){Console.WriteLine("Derived - Method2");}}// ...BaseClass bc = new BaseClass();DerivedClass dc = new DerivedClass();BaseClass bcdc = new DerivedClass();bc.Method1();bc.Method2();dc.Method1();dc.Method2();bcdc.Method1();bcdc.Method2();// Output:// Base - Method1// Base - Method2// Base - Method1// Derived - Method2// Base - Method1// Base - Method2Абстрактные типы данных, классы и интерфейсы[править]Абстрактный тип данных (АТД) — это тип с полностью инкапсулированной структурой.

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

Модификатор abstract перед классом. Используется в C# и Java.2. Класс содержит хотя бы один абстрактный метод. В C# и Java абстрактный метод обозначается модификатором abstract перед объявлением метода. В C++абстрактные методы называются чистыми виртуальными. Примеры:// тело отсутствуетvirtual void draw() = 0; // C++abstract void draw(); // Java, C#open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.com3.

Если в классе, производном от абстрактного класса с абстрактными методами, не замещ ен хотя бы один абстрактный метод, то класс тоже являетсяабстрактным. В C# и Java незамещ енные абстрактные методы должны быть явно объявлены как абстрактные.В языке C# абстрактными могут быть и свойства:abstract int Length { get;}Пример абстрактного класса (Java или C#):abstract class ShapesClass{abstract public int Area();}Абстрактные методы (функции) есть в C++, Java, Delphi, C#, Ада 95.Абстрактный тип данных[править]В большинстве языков абстрактный тип данных реализуется с помощ ью интерфейсов. См. пример в соответствующ ем разделе.В Ада используется ключевое слово limited:type Stack is limited private;В ОБЕРОН И ОБЕРОН-2 АТД позволяют открывать поля структуры.Пример абстрактного ТД и абстрактных функций в Ада95[править]Мы продемонстрируем абстрактные классы, описывая несколько реализаций одной и той же абстракции; абстрактный класс будет определять структуру данныхSet, и производный класс — реализовывать множество в виде булевого массива.

В языке Ada 95 слово abstract обозначает абстрактный тип и абстрактныеподпрограммы, связанные с этим типом:package Set_Package istype Set is abstract tagged null record;function Union(S1, S2: Set) return Set is abstract;function Intersection(S1, S2: Set) return Set is abstract;end Set_Package;Вы не можете объявить объект абстрактного типа и не можете вызвать абстрактную подпрограмму. Тип служит только каркасом для порождения конкретныхтипов, а подпрограммы должны замещ аться конкретными подпрограммами.Рассмотрим производный тип, в котором множество представлено булевым массивом:with Set_Package;package Bit_Set_Package istype Set is new Set_Package.Set with private;function Union(S1, S2: Set) return Set;function lntersection(S1, S2: Set) return Set;privatetype Bit_Array is array(1..100) of Boolean;type Set is new Set_Package.Set withrecordData: Bit_Array;end record;end Bit_Set_Package;open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comКонечно, необходимо тело пакета, чтобы реализовать операции.Интерфейс[править]Интерфейс состоит только из абстрактных методов.

В нем нет реализации методов (как нет и невиртуальных методов), нет нестатических полей (статические поля,например константы, допустимы).Пример моделирования интерфейса на C++:class Set {public:virtual void Incl(T & x) = 0virtual void Excl(T & x) = 0virtual bool IsIn(T & x) = 0};virtual ~Set () {} // деструкторЯвная и неявная реализация интерфейса[править]Явная реализация интерфейса означает, что вызов метода интерфейса может происходить только через ссылку на интерфейс, но не может происходить черезссылку на класс, реализующ ий интерфейс. Перед вызовом интерфейсного метода необходимо явно преобразовать ссылку на объект реализующ его класса кссылке на интерфейс. Концепция явной реализации полезна, например, при конфликте имен между унаследованными интерфейсами.

Используется только в С#.Явная реализация всегда статична, неявная же может быть виртуальной. Неявная реализация может быть абстрактной и реализовываться только в классепотомке. Явная реализация не может быть абстрактной, но сам класс может иметь другие абстрактные методы и сам быть абстрактным.interface ISomeInterface{void F();}class CoClass: ISomeInterface{void ISomeInterface.F() { //в случае неявного интерфейса, здесь стояло бы public void F() {System.Console.WriteLine(“Явно реализованный метод”);}// ...}// ...CoClass c = new CoClass();c.F(); // ошибка: нельзя вызывать явно реализованный метод// интерфейса через ссылку на объект((ISomeInterface)c).F(); // все нормальноМножественное наследование[править]Полностью реализовано только в C++.

Характеристики

Тип файла
PDF-файл
Размер
597,43 Kb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

Сравнение языков программирования
Сравнение_языков_программирования_files
ClickTracking.js
CollapsibleTabs.js
ajax.js
centralnotice.js
combined.css
commonPrint.css
flaggedrevs.css
flaggedrevs.js
index.css
index.php
index_002.css
index_003.css
index_004.css
index_005.css
injection_graph_func.js
injection_nh_graph.css
jquery-ui-1.css
js2.js
main.css
main_002.css
mwsuggest.js
plugins.js
shared.css
skypeplugin_dropdownmenu.css
wikibits.js
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее