Lush Green
|
|
- Антим Ненков
- преди 4 години
- Прегледи:
Препис
1 Класове
2 Какво са класовете? Основен инструмент на ООП Средство за дефиниране на абстрактни типове данни Синтактична конструкция, която позволява логическо групиране на данни и операциите над тях
3 Дефиниция на клас Декларации на член-данни (полета) Декларации на член-функции (методи) конструктори селектори мутатори деструктор
4 Дефиниция на клас <клас> ::= class <име_на_клас> { <тяло> }; <име_на_клас> често е съществително име с главна буква <тяло> ::= { <декларация>; } <декларация> ::= <член-данна> <конструктор> <мутатор> <селектор> <деструктор> <член-данна> ::= [<достъп>:] <тип> <име> {, <име>} <конструктор> ::= [<достъп>:] <име_на_клас>(<параметри>) <мутатор> ::= [<достъп>:] <тип> <име>(<параметри>) <селектор> ::= [<достъп>:] <тип> <име> (<параметри>) const <деструктор> ::= [<достъп>:] ~<име_на_клас>() <достъп> ::= private protected public
5 Дефиниция на клас Може да присъства само един път в даден файл Обикновено се пише в заглавен (header) файл с разширение.h Файловете, които използват класа, включват дефиницията му чрез включване на заглавния файл с #include class Rational { private: int numer, denom; public: Rational(); int getnumerator() const; void read(); };
6 Дефиниция на клас Конструкторите и деструкторите нямат тип! Деструкторът няма параметри! Прието е член-данни и член-функции да са разделени Директната рекурсията е забранена, както при записи class Employee { Employee boss;... }; Индиректната рекурсия (чрез указател) е позволена class Employee { Employee* boss;... }; Член-данните не може да са от тип псевдоним! Член-функциите могат да са от всякакъв тип, включително и същия клас: class Employee {... Employee getboss() const; };
7 Обекти Променливите от тип някой клас се наричат обекти или инстанции на класа <дефиниция_на_обект> ::= ( <име_на_клас> <клас> ) <описание_на_обект> {, <описание_на_обект> }; <описание на обект> ::= <име_на_обект> [ = <израз> ] <име_на_обект>(<параметри>) <име_на_обект> = <име_на_клас>(<параметри>)
8 Представяне на обекти в паметта поле 1 поле 2 поле 3 поле 4 всеки обект от даден клас заема едно и също количество памет sizeof(<клас>) или sizeof(<обект>) връщат броя байтове, заемани от обекта от дадения клас
9 Представяне на класове в паметта... Rational Rational::Rational() Rational::getNumerator() Rational::read()
10 Достъп до компонента на обект <обект>.<член-данна> <обект>.<член-функция>(<параметри>) Всеки обект има собствени стойности на член-данните Кодът на функциите се пази в класа, а не във всеки обект!
11 Достъп до компонента чрез указател към обект (*<указател_към_обект>.)<член-данна> (*<указател_към_обект>.)<член-функция>(<параметри>) <указател_към_обект>-><член-данна> <указател_към_обект>-><член-функция>(<параметри>) С указатели към обекти се работи както с указатели към обикновени променливи
12 Указател this В член-функциите имаме достъп до компонентите без да се указва обект Използва се обекта, за който е извикана член-функцията Как член-функциите разбират за кой обект са извикани? При всяко извикване на член-функция се създава автоматично константен указател <име_на_клас> * const this this винаги сочи към обекта, за който е извикана член-функцията За селекторите: <име_на_клас> const * const this
13 this като неявен параметър void Rational::read() { cin >> numer >> denom; }... се превежда до void Rational::read(Rational* const this) { cin >> this->numer >> this->denom; } r.read();... се превежда до Rational::read(&r);
14 this като неявен параметър int Rational::getNumerator() const { return numer; }... се превежда до int Rational::getNumerator(Rational const * const this) { return this->numer; } cout << r.getnumerator();... се превежда до cout << Rational::getNumerator(&r);
15 Спецификатори за достъп Две нива на достъп: вътрешен достъп Достъп до компоненти на класа от член-функции на същия клас външен достъп Достъп до компоненти на класа от функции, които не са член-функции на същия клас обикновени функции член-функции на друг клас
16 Спецификатори за достъп Спецификатори за достъп private позволен е само вътрешен достъп public позволен е вътрешен и външен достъп protected позволен е вътрешен достъп и ограничен външен достъп ще говорим за protected по-късно спецификатор по подразбиране е private в struct е public
17 Спецификатори за достъп След първото използване на спецификатор за достъп, той остава валиден за всички последващи декларации Спецификатор за достъп може да бъде използван произволен брой пъти class Example { int a; // private double b; //private public: Example(); // public int geta() const; // public private: void setb(double b); // private };
18 Операция за указване на област [<област>]::<име> <област> е запис, клас или пространство от имена Ако <област> е пропусната, се подразбира глобалното пространство от имена Име с използвана операция :: се нарича квалифицирано име
19 Примери: Операция за указване на област Rational::read член-функцията read на класа Rational Student::read член-функцията read на класа Student ::read глобалната функция read Операцията :: се използва, когато има нужда да се разреши двусмислица (ambiguity)
20 Дефиниция на член-функция <член_функция> ::= [inline] [<тип>] <име_на_клас>::<име_на_член_функция> (<параметри>) { <тяло> } Прието е член-функциите да се дефинират в изходния (source) файл, а не в заглавния (header) файл Защо? Който използва класа ви трябва да знае кои са член-данните и какви член-функции има, но не и как са реализирани
21 Вградени (inline) член-функции Позволено е член-функциите да се дефинират в дефиницията на класа class Rational {... Rational() { numer = 0; denom = 1; } }; Такива функции се наричат вградени Вградените функции не се извикват със стекови рамки Тяхното тяло се замества при всяко тяхно извикване Една вградена функция може да е дефинирана извън декларацията на класа Преди дефиницията се поставя запазената дума inline Окончателното решение дали една функция да е вградена е на компилатора! Препоръчително е да се вграждат само кратки функции
22 Област (scope) на класовете Глобално ниво Областта на класа е от дефиницията му до края на файла, в който е дефиниран Локално ниво дефиниция във функция (локален клас) Областта на класа е от дефиницията му до края на функцията, в който е дефиниран дефиниция в друг клас (вложен клас) Областта на класа е от дефиницията му до края на класа, в който е дефиниран
23 Локални класове Особености на локалното ниво могат да извикват рекурсивно функцията, в която са дефинирани могат да използват статичните променливи, дефинирани в тази функция класът и обектите му не са видими извън функциите Вложени класове не могат да използват член-данните на обвиващия клас достъпът до компонентите на обвиващия клас е вътрешен за дефиниране на член-функции на вложени класове се използват няколко последователни операции за указване на област OuterClass::InnerClass::function() {... }
24 Примери за дефиниране на клас Точка в равнината Точка в пространството Пирамида
Виртуални функции
Виртуални функции Статично свързване Как компилаторът избира кой метод или коя функция да бъде извикана? Прави се сравнение между формални и фактически параметри и се избира най-точното съвпадение в случай,
ПодробноLush Green
Конструктори Жизнен цикъл на обект За обекта се заделя памет и се свързва с неговото име Извиква се подходящ конструктор на обекта... (достъп до компоненти на обект, изпълняване на операции) Достига се
ПодробноПредефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве
Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision :
ПодробноПрограмиране на Паскал
Поради връзката на С++ с езика С в голяма част от литературата е прието записването С/С++. Това е найизползваният език за програмиране в света, поради което синтаксисът на някои от по-новите езици като
ПодробноДинамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София
Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.3 16 ноември 2004 г. Пример:
ПодробноC++
Управляващи оператори в C++ Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 18 30 октомври 2018 г. Трифон Трифонов (УП 18/19) Управляващи оператори в C++ 18 30 октомври
Подробно2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2
2. Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 февруари 2007 г. 1 Наследяване 1 2 2 3 Полиморфизъм 9 1. Наследяване Наследяване UML UML unified modeling
ПодробноКласове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1
Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1 1.1 Модулност............................ 1 1.2 Обектно-ориентирана
ПодробноДефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София
Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 9 март 2005 г. template< class
ПодробноКанонична форма на клас или 4 (голямата четворка) Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно и
Канонична форма на клас или 4 (голямата четворка) Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 6 април 2017 г. Трифон Трифонов
ПодробноДинамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр
Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Трифон Трифонов (УП 16/17) Динамична памет 21 декември
Подробно4
Наследяване и 4 Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 11 май 2017 г. Трифон Трифонов (ООП 16/17) Наследяване и голямата
ПодробноСтруктура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор
Структура на програма в C Част 7 - масиви, оператор за индексиране, sizeof оператор Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София
ПодробноСтруктура на програма в C - Част 6 - goto, switch, break и continue клаузи
Структура на програма в C Част 6 - goto, switch, break и continue клаузи Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 21 април
ПодробноУказатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23
Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели! Калин Георгиев Увод в програмирането 21
ПодробноСинтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/
Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/16) Синтаксис за дефиниране на функции 6 януари 2016
Подробно3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението
3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението представя кратко въведение в синтактичния анализ.
ПодробноМИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА
МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА У Ч Е Б Н А П Р О Г Р А М А ЗА ЗАДЪЛЖИТЕЛНА ПРОФЕСИОНАЛНА ПОДГОТОВКА ПО ПРОГРАМИРАНЕ И АЛГОРИТМИЧНИ ЕЗИЦИ ЗА ПРОФЕСИЯ: КОД 482010 ИКОНОМИСТ - ИНФОРМАТИК СПЕЦИАЛНОСТ:
ПодробноОбработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re
Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 27 февруари 2005 г. 1 #include < cstdio
ПодробноРекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари
Рекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари 2017 г. Трифон Трифонов (УП 16/17) Рекурсия 21.12.16
ПодробноИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври
JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври 2008 JAVA ОБЕКТИ Забележка: Тази лекция е адаптация на лекция от курса: 6.092 Java
ПодробноПри изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и
При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) или изменящи се (променливи). Тези данни най-често бива
ПодробноВ тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц
В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операции в езикът C и С++. Символ Предназначение Аритметични
ПодробноМасиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Триф
и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Трифон Трифонов (УП 16/17) и низове 9 ноември 2016 г. 1 / 5 Логическо
ПодробноПроф
Утвърдил:.. / доц. д-р Е. Великова / Утвърден от Факултетен съвет с протокол... /... СОФИЙСКИ УНИВЕРСИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ Факултет по Математика и Информатика Специалност: Компютърни науки М И К 0
ПодробноSlide 1
Списъци. Структура и синтаксис. Създаване и показване. Основни операции(добавяне, изваждане на елемент или цял подсписък; подреждане). Трансформации. проф. дмн С. Христова Списъци Списъците / list са основна
ПодробноМасиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма
Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 29 ноември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15 29 ноември 2018 г. 1 / 16 Масиви Логическо
ПодробноBlack and White
Advanced C++ Memory Management Йордан Димитър Зайков Трендафилов Memory Management Effective C++ 2 nd ed: 3, 5, 7, 8, 9, 10 More Effective C++: 1, 3, 8 Exceptional C++: 35, 36 Какво всъщност прави new?
ПодробноМасиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1
Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15.11-6.12.2018 г. 1 / 17 Масиви
ПодробноЛекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Харду
Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Хардуер)Програмна част Software(Софтуер) Хардуерът включва:
Подробно-
Лениво оценяване и програмиране от по-висок ред Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 7 януари 2016 г. Трифон Трифонов (ФП-И 15/16) Лениво оценяване 7 януари 2016 г.
ПодробноПрограмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5
Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Литература Необходими програми Kernighan & Ritchie - The C Programming
Подробно036-B.dvi
МАТЕМАТИКА И МАТЕМАТИЧЕСКО ОБРАЗОВАНИЕ, 2004 MATHEMATICS AND EDUCATION IN MATHEMATICS, 2004 Proceedings of the Thirty Third Spring Conference of the Union of Bulgarian Mathematicians Borovets, April 1
Подробно2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет
2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнението представя кратко въведение в теорията на лексическия
ПодробноАнализ и оптимизация на софтуерни приложения
Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Какво могат и какво не могат компилаторите Съдържание 1. Оптимизационен континуум 2. Някои известни видове оптимизации 2/49 Оптимизационен
ПодробноЛабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн
Лабораторно упражние 6 Тема: Оператори за цикли в езика C++. Реализира на циклични алгоритми I. Цел на лабораторното упражние Да се затвърдят знанията на студентите за организацията и синтаксиса на програми
ПодробноМаисви
МАСИВИ 1. Структурни типове данни Структура от данни - организирана информация, която може да бъде описана, създадена и обработена с помощта на програма. Скаларни типове данни: Целочислен int Реален double
ПодробноСтруктура на програма в C - Част 2 - типове, функции
Структура на програма в C Част 2 - типове, функции Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 10 март 2019 г. И. Георгиев, Х.
ПодробноMicrosoft Word - VM22 SEC55.doc
Лекция 5 5 Диференциални уравнения от първи ред Основни определения Диференциално уравнение се нарича уравнение в което участват известен брой производни на търсената функция В общия случай ( n) диференциалното
Подробно1. Инструментални средства на изкуствения интелект. Основната характеристика на програмните системи, базирани на знания, отличаваща ги от стандартните
1. Инструментални средства на изкуствения интелект. Основната характеристика на програмните системи, базирани на знания, отличаваща ги от стандартните програмни системи, е използването на знания в тях.
ПодробноПРОГРАМНО ОСИГУРЯВАНЕ НА КОМПЮТЪРА
СРЕДИ ЗА ПРОГРАМИРАНЕ ПРОГРАМНО ОСИГУРЯВАНЕ НА КОМПЮТЪРА Същност на програмното осигуряване За да могат компютрите да разбират описаните на езика за програмиране алгоритми, те трябва да бъдат преведени
ПодробноСериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23
Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 f «data; f» data; Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 2 / 23 Първо изискване:
ПодробноКОНСПЕКТ ЗА ДЪРЖАВЕН ИЗПИТ
БУРГАСКИ СВОБОДЕН УНИВЕРСИТЕТ ЦЕНТЪР ПО ИНФОРМАТИКА И ТЕХНИЧЕСКИ НАУКИ Учебно помагало за държавен изпит спец Информатика и компютърни науки теми: - част автори: проф Лазаров теми - доц Гичев теми 3 -
ПодробноАнализ и оптимизация на софтуерни приложения
Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Съдържание 1. Какво е паралелизация? 2. Примери 3. Паралелни алгоритми 4. Синхронизация. Критични секции 5. Проблеми при паралелните
Подробно