Лекции (6) (Презентации лекций (PDF))
Описание файла
Файл "Лекции (6)" внутри архива находится в папке "Презентации лекций (PDF)". PDF-файл из архива "Презентации лекций (PDF)", который расположен в категории "". Всё это находится в предмете "практикум (прикладное программное обеспечение и системы программирования)" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Список литературы1.И. А. Волкова, А. В. Иванов, Л. Е. Карпов. Основы объектно-ориентированногопрограммирования. Язык программирования С++. Учебное пособие для студентов 2курса (969.27 Кбайт). — М.: Издательский отдел факультета ВМК МГУ, 2011.2.И. А. Волкова, А. А.
Вылиток, Т. В. Руденко. Формальные грамматики и языки. Элементытеории трансляции (3-е издание) (1.59 Мбайт). — М.: Изд-во МГУ, 2009 (версия от06.02.2010).3.И. А. Волкова, И. Г. Головин, Л. Е. Карпов. Системы программирования (Учебное пособие)(1.2 Мбайт). — М.: Издательский отдел факультета ВМиК МГУ, 2009.4.И. А. Волкова, А. А.
Вылиток, Л. Е. Карпов. Сборник задач и упражнений по языку С++(Учебное пособие для студентов 2 курса). – М.: Издательский отдел факультета ВМК МГУ,2013.5.Д. Грис. Конструирование компиляторов для цифровых вычислительных машин. —М.: Мир, 1975.6.Ф. Льюис, Д. Розенкранц, Р. Стирнз. Теоретические основы проектированиякомпиляторов. — М.: Мир, 1979.7.А. Ахо, Дж. Ульман. Теория синтаксического анализа, перевода и компиляции, т.
1,2 —М.: Мир, 1979.8.Л. Бек. Введение в системное программирование. — М.: Мир, 1988.9.А. Ахо, Р. Сети, Дж. Ульман. Компиляторы. — М.: Изд. дом «Вильямс», 2001.(Шифр в библиотеке МГУ: 5ВГ66 А-955)10. А. В. Гордеев, А. Ю. Молчанов. Системное программное обеспечение. — СПб.: Питер, 2001111.Г. Буч. Объектно-ориентированный анализ и проектирование с примерами приложенийна С++ (zip), 2-е издание.
— М. СПб.: «Издательство Бином» — «Невский диалект»,1998.12.А. Элиенс. Принципы объектно-ориентированной разработки программ, 2-е издание. —М.: Издательский дом «Вильямс», 2002.13.И. О. Одинцов. Профессиональное программирование. Системный подход. — СПб.: БХВПетербург, 2002.14.Н. Н. Мансуров, О. Л. Майлингова. Методы формальной спецификации программ: языкиMSC и SDL. — М.: Изд-во «Диалог-МГУ», 1998.15.А.
М. Вендров. CASE-технологии. Современные методы и средства проектированияинформационных систем. — Электронная публикация на CITFORUM.RU16.М. Фаулер, К. Скотт. UML в кратком изложении. Применение стандартного языкаобъектного моделирования. — М.: Мир, 1999.17.Г. Майерс. Искусство тестирования программ. — М.: «Финансы и статистика», 198218.С. Канер, Дж.
Фолк, Е. К. Нгуен. Тестирование программного обеспечения. — М.: «DiaSoft»,200119.Дж. Макгрегор, Д. Сайкс. Тестирование объектно-ориентированного программногообеспечения. Практическое пособие. — М.: «DiaSoft», 2002.20.Б. Страуструп. Язык программирования С++. Специальное издание. — М.: Издательство«БИНОМ», 2001.21.Б. Страуструп. Программирование: принципы и практика использования С++.:Пер. с англ.
– М. ООО «И.Д.Вильямс», 2011. – 1248 с.22.Г. Шилдт. Самоучитель С++. 3-е изд. — СПб: БХВ-Петербург, 2002.2Электронные ссылкиМатериалы по курсу можно найти на сайте:http://cmcmsu.no-ip.info/2course/Некоторые электронные ссылки на полезные книги:http://povt.zaural.ru/edocs/uml/content.htm —Г Буч, Д Рамбо, А Джекобсон «Язык UML. Руководство пользователя»http://vmk.ugatu.ac.ru/book/buch/index.htm —Гради Буч «Объектно-ориентированный анализ и проектированиес примерами приложений на С++»3Язык C++С++ позволяет справиться с возрастающейсложностью программ (в отличие от С).Автор — Бьярне Страуструп.Стандарты (комитета по стандартизации ANSI) – 1998,2011.С++:• лучше С,• поддерживает абстракции данных,• поддерживает объектно-ориентированное• программирование (ООП).4Парадигмы программированияВсе программы состоят из кода и данных и каким-либо образомконцептуально организованы вокруг своего кода и\или данных.Основные парадигмы (технологии) программированияопределяют способ построения программ: процедурно-ориентированная (при кот.
программа — это рядпоследовательно выполняемых операций, причём код воздействует наданные, например в программах на С), объектно-ориентированная (при кот. программа состоит из объектов —программных сущностей, объединяющих в себе код и данные,взаимодействующих друг с другом через определенные интерфейсы, приэтом доступ к коду и данным объекта осуществляется только через самобъект, т.е. данные определяют выполняемый код), функциональная, логическая.5Постулаты ООП.Абстракция — центральное понятие ООП.Абстракция позволяет программисту справиться сосложностями решаемых им задач.Мощный способ создания абстракций –иерархическая классификациятиповая(структура классов)структурная(структура объектов)Основные механизмы (постулаты) ООП:- инкапсуляция,- наследование,- полиморфизм.6ИНКАПСУЛЯЦИЯИнкапсуляция — механизм, связывающий вместе код и данные, которыми онманипулирует; защищающий их от произвольного доступа со стороныдругого кода, внешнего по отношениюк рассматриваемому.Доступ к коду и данным жестко контролируется интерфейсом.Основой инкапсуляции является класс.Класс — это механизм (пользовательский тип данных) длясоздания объектов.Объект класса — переменная типа класс или экземпляр класса.Любой объект характеризуется состоянием (значениями полейданных) и поведением (операциями над объектами,задаваемыми определенными в классе функциями, которыеназывают методами класса).7НАСЛЕДОВАНИЕНаследование — механизм, с помощью которого один объект(производного класса) приобретает свойства другого объекта(родительского, базового класса).Наследование позволяет объекту производного класса наследоватьот своего родителя общие атрибуты, а для себя определять только техарактеристики, которые делают его уникальным внутри класса.Производный класс конкретизирует, в общем случае расширяетбазовый класс.Наследование поддерживает концепцию иерархическойклассификации.Новый класс не обязательно описывать, начиная с нуля, чтосущественно упрощает работу программиста.8ПОЛИМОРФИЗМПолиморфизм — механизм, позволяющий использовать один итот же интерфейс для общего класса действий.В общем случае концепция полиморфизма выражаетсяс помощью фразы «один интерфейс — много методов»Выбор конкретного действия (метода) применительнок конкретной ситуации возлагается на компилятор.Программисту же достаточно запомнить и применять одининтерфейс, вместо нескольких, что также упрощает его работу.Различаются следующие виды полиморфизма:- статический (на этапе компиляции, с помощью перегрузкифункций),- динамический (во время выполнения программы,реализуется с помощью виртуальных функций) и- параметрический (на этапе компиляции, с использованиеммеханизма шаблонов).9Декомпозиция задачиПри программировании в объектно-ориентированном стилена первое место выходит проектирование решения задачи,т.е определение того, какие классы и объекты будутиспользоваться в программе, каковы их свойства и способывзаимодействия.Как правило, при этом необходимо произвестидекомпозицию задачи.Декомпозиция — научный метод, использующий структурузадачи и позволяющий разбить решение одной большойзадачи на решения серии меньших задач, возможновзаимосвязанных, но более простых.10Синтаксис классаclass имя_класса {[private:]закрытые члены класса (функции, типы и поля-данные)public:открытые члены класса (функции, типы и поля-данные)protected:защищенные члены класса} список_объектов;Описание объектов — экземпляров класса:имя_класса список объектов;// служ.
слово class не требуетсяКлассы С++ отличаются от структур С++ только правилами определения поумолчанию:- прав доступа к первой области доступа членов класса и- типа наследования:для структур — public,для классов — private.11Члены класса• Члены-данные;• Члены-функции (методы);• Члены-типы — вложенные пользовательские типы,Правила доступа к членам класса и поиска их имен единообразны для всехчленов класса и не зависят от их вида.Ex.:class X {doublepublic:void fint a;enum {private:structt;// данное// метод// данноеe1, e2, e3 } g;( );inner {int i, j;void g ( );// вложенный класс};inner c;};...X x;x.a = 0; x.g = X::e1;12Действия над объектами классовНад объектами класса можно производить следующиедействия: присваивать объекты одного и того же класса (при этомпроизводится почленное копирование членов данных) получать адрес объекта с помощью операции & передавать объект в качестве формального параметрав функцию возвращать объект в качестве результата работы функции. осуществлять доступ к элементам объекта с помощьюоперации « .
», а если используется указатель на объект, тос помощью операции «->» вызывать методы класса, определяющие поведениеобъекта13Пример класса...class A {int a;public:void set_a (int n);int get_a ( ) const { return a; }// Константные методы класса// не изменяют состояние своего объекта};void A::set_a (int n) {a = n;}int main () {A obj1, obj2;obj1.set_a(5);obj2.set_a(10);cout << obj1.get_a ( ) << '\n';cout << obj2.get_a ( ) << endl;return 0;}14АТД (абстрактный тип данных)АТД называют тип данных с полностью скрытой(инкапсулированной) структурой, а работа спеременными такого типа происходит только черезспециальные, предназначенные для этого функции.В С++ АТД реализуется с помощью классов(структур), в которых нет открытых членов-данных.Класс А из предыдущего примера являетсяабстрактным типом данных.15О терминологииОператор (statement) — действие, задаваемое некоторойконструкцией языка.Операция (operator, для обозначения операций языка: « + »,« * », « = », и др.) — используются в выражениях.Определение (описание) переменной (definition) — при этомотводится память, производится инициализация,определение возможно только 1 раз.Объявление переменной (declaration) — дает информациюкомпилятору о том, что эта переменная где-то в программеописана.Для преобразования типов используются два термина —преобразование (conversion) и приведение (cast).16Некоторые отличия С++ от С Введен логический тип bool и константы логического типа true и false. В С++ отсутствуют типы по умолчанию(например, обязательно int main () {…} ). Локальные переменные можно описывать в любом месте программы,в частности внутри цикла for.
Главное, чтобы они были описаны до ихпервого использования.По стандарту С++ переменная, описанная внутри цикла for, локализуетсяв теле этого цикла. В С++ переработана стандартная библиотека.В частности, в стандартной библиотеке С++ файл заголовковввода/вывода назвается <iostream>, введены классы, соответствующиестандартным (консольным) потокам ввода — класс istream — и вывода —класс ostream, а также объекты cin (класса istream) и cout и cerr (классаostream).Через эти объекты доступны операции ввода >> из стандартного потокаввода (например, cin >> x ;), и вывода << в стандартный поток вывода(например, cout << "string" << S << '\n';), при использовании которых ненадо указывать никакие форматирующие элементы.17Работа с динамической памятьюint *p,*m;p = new int;илиp = new int (1);илиm = new int [10];— для массива из 10 элементов;Массивы, создаваемые в динамической памятиинициализировать нельзя.…delete p;илиdelete [ ] m;— для удаления всего массива.18Значения параметров функциипо умолчаниюПример:void f (int a,int b = 0, int c = 1);Обращения к функции:f(3)// a = 3, b = 0, c = 1f(3, 4)// a = 3, b = 4, c = 1f(3, 4, 5)// a = 3, b = 4, c = 519Пространства именПространства имен вводятся только на уровне файла, но не внутри блока.namespace std {// объявления, определения}Ex:std::cout << std::endl;namespace NS {char name [ 10 ] ;namespace SP {int var = 3;}}Ex:...