Лекции (6) (1119477)
Текст из файла
Список литературы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:...
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.