2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2
|
|
- Добринка Русинова
- преди 4 години
- Прегледи:
Препис
1 2. Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 февруари 2007 г. 1 Наследяване Полиморфизъм 9 1. Наследяване Наследяване UML UML unified modeling language. Използва се за моделиране на обектно ориентирани програмни системи. Дефинира набор от различни видове диаграми. Най-често използваните диаграми са клас диаграмите. <class name> -<attribute name 1>: <type 1> +<attribute name 2>: <type 2> +<method name>(<argument name>:<type>): <return type> Клас Employee Employee 4 public: 5 Employee(string name,long id) 6 : name_(name),id_(id) 8 string get_name() const; 9 long get_id() const; Клас Manager 1 Grady Booch, Object Oriented Analysis and Design with Applications, Manager -level_: int +get_level(): int 1 2
2 1 class Manager { 4 int level_; 5 public: 6 Manager( string name, 7 long id, 8 int level) 9 :name_(name), id_(id), 10 level_(level) 11 {} 12 string get_name() const; 13 long get_id() const; 14 int get_level() const; 15 }; Класовете Employee и Manager Employee Manager -level_: int +get_level(): int Мениджърът (Manager) е вид работник (Employee). Класът Manager притежава всички атрибути и методи на класа Employee. Освен атрибутите и методите на класа Employee, класът Manager притежава някои допълнителни свойства: ниво в йерархията (level_); група от подчинени;... Наследяване 3 Employee Manager -level_: int +get_level(): int За да се моделира подобен вид отношение между класовете в обектноориентираното програмиране се използва наследяване. Класът Employee се нарича базов клас или супер клас. Класът Manager се нарича производен клас или наследник. 4 public: 5 Employee(string name,long id) 6 : name_(name),id_(id) 8 string get_name() const; 9 long get_id() const; 2 int level_; 5 : Employee(name,id), 8 int get_level( void) const; 9 }; Повторно използване на кода (code reuse). 4
3 Методите get_name() и get_id() са дефинирани само веднъж в класа Employee. Класът Manager също има методи get_name() и get_id(), наследени от Employee. 1 int main() { 2 Employee e1("иван Работников", ); 3 Manager m1("шеф Иванов", , 1); 4 //... 5 Employee* employee_ list[10]; 6 employee_list[0]=&e1; 7 employee_list[1]=&m1; 8 //... 9 Manager* manager_ list[10]; 10 manager_list[0]=&m1; 11 manager_list[1]=&e1;// error!!! return 0; 14 } Наследяването на Manager от Employee превръща Manager в подтип на Employee. Manager е Employee и поради това Manager* може да се използва навсякъде, където трябва да се използва Employee*. Обратното, обаче, не е вярно; не всеки Employee е Manager и следователно Employee* не може да замести използването на Manager*. 1 class Employee; 2 3 class Manager: public Employee { // error!!! 4 //... 5 }; За да може един клас да се използва като базов клас, той трябва да е дефиниран и неговата дефиниция да е видима при декларирането на производния клас. В ред 3 е допусната грешка: класът Employee само е деклариран, но неговата дефиниция липсва. Методи 4 public: 5 Employee(string name, long id) 6 : name_(name), id_(id) 8 string get_name(void) const; 9 long get_id( void) const; 10 void print( void) const; 11 }; Методи 2 int level_; 5 : Employee(name,id), 8 int get_level( void) const; 9 void print( void) const; Методи Ще разгледаме дефиницията на метода print() в класа Manager. Методите на класа наследник имат достъп до публичните (public) и защитените (protected) член-променливи и методи на базовият клас 1 void Manager::print( void) const { 2 cout<<"name: "<<get_name()<<endl; 3 } Методите на класа наследник нямат достъп до скритите (private) член-променливи и методи на базовият клас 5 6
4 1 void Manager::print( void) const { 2 cout<<"name: "<<name_<<endl;// грешка!! 3 }; Методи При реализацията на производен клас трябва да сее използват само публичните методи и член-променливи на базовия клас. Като компромис могат да се използват защитени (protected) членпроменливи и методи. Защитените членове на базовия клас се държат като публични (public) за членовете на производните класове и като скрити ( private) за всички останали функции. В базовия и производния класове може да се дефинират методи с еднакви имена. В класовете Employee и Manager е дефиниран метод с едно и също име print(). Когато в класа наследник искаме да използваме метода print(), дефиниран в базовият клас, трябва да използваме пълното му име. 1 void Manager::print( void) const { 2 Employee::print(); 3 //... 4 } Следната дефиниция е некоректна (безкрайна рекурсия): 1 void Manager::print( void) const { 2 print(); 3 //... 4 } Конструктори При създаване обект от производен клас: първо се създава базовият клас, след това се създават член-променливите на производния клас и след това самият производен клас. 5 : Employee(name,id), }; Конструктори В конструктора на производния клас могат да се инициализират член-променливите, които са декларирани в производния клас. Не е възможно да се инициализират директно член-променливите на базовия клас. Ако базовият клас няма конструктор по подразбиране, то в производния клас задължително трябва да се извика конкретен конструктор на базовият клас. Ако в производния клас не е изрично указано кой конструктор на базовия клас трябва да се извика, то ще се извика конструкторът по подразбиране на базовия клас. Конструктори 2 //... 3 }; 4 Manager::Manager(string name, long id, 5 int level) 6 : name_(name), 7 id_(id), 8 level_(level) 9 {...} Колко са грешките в дефиницията на конструктора на класа Manager? Йерархия от класове 2 int level_; 7 8
5 Заместване на функции 1 Employee e1("иван Работников", ); 2 Manager m1("шеф Иванов", , 1); 3 //... 4 vector < Employee* > employee_ list; 5 employee_list.push_back(&e1); 6 employee_list.push_back(&m1); 7 //... 8 employee_list[0]->print(); 9 employee_list[1]->print(); Кой метод се извиква в ред 9? Employee::print() или Manager::print()? Йерархия от класове 1 class Employee{/*...*/}; 2 class Temporary{/*...*/}; 3 class Manager: public Employee {/*...*/}; 4 class Director: public Manager {/*...*/}; 5 class Consultant: public Manager, 6 public Temporary{ 7 /*...*/}; 3. Полиморфизъм Заместване на функции void print( void) const; 6 }; void print( void) const; 6 }; Заместване на функции Трябва да се дефинира функция, която да разпечатва на стандартния изход данните за всички работници. Нека разгледаме следната примерна реализация: 1 vector<employee*> v; for(vector<employee*>::iterator it=v.begin(); 4 it!=v.end(); ++it){ 5 (*it)->print(); 6 } В тази функция в ред 5 винаги се извиква функцията Employee::print(). Такава реализация е неудовлетворителна, тъй като се губи спецификата на различните видове работници. Вариант за решаването на проблема е в класа Employee да се добави член-променлива, в която се помни типа на обекта. 2 public: 3 enum EmployeeType {E, M}; 4 EmployeeType employee_ type; 5 private:
6 1 public: 2 Employee(string name, long id) 3 : employee_type(e), 4 name_(name), 5 id_(id) 6 {} }; : Employee(name, id), 7 { 8 employee_ type= Employee:: M; 9 } Когато се добавя нов клас в йерархията трябва да се променят всички функции, които зависят от проверки за типа. Когато се добавя нов клас в йерархията трябва да се промени и базовият клас. Използването на член-променлива за типа противоречи на идеята за капсулиране на данните. 4 public: 5 Employee(string name, long id) 6 : name_(name), 7 id_(id) 8 {} 9 v i r t u a l void print(void) const{ 10 cout << name_ << " " 11 << id_ << endl; 12 } 13 }; 1 void print_all(vector<employee*>& v){ 2 for(vector<employee*>::iterator 3 it=v.begin(); 4 it!=v.end();++it){ 5 i f ((*it)->employee_type==employee::m){ 6 // print manager 7 } 8 else { 9 // print employee 10 } 11 } 12 } 2 int level_; 5 : Employee(name, id), 8 void print( void) const { 9 Employee::print(); 10 cout << "\tlevel:" << level_ << endl;; 11 } 12 }; Такова решение на проблема може да работи в малка програма, но когато йерархията от класове нараства, броят на проверките за типа на променливата също нараства void print_all(vector<employee*>& v){ 2 for(vector<employee*>::iterator 3 it=v.begin(); 12
7 4 it!=v.end();++it){ 5 (*it)->print(); 6 } 7 } 1 int main( int argc, char* argv[]){ 2 Employee e("brown", L); 3 Manager m("smith", L, 1); 4 5 vector < Employee* > employees; 6 employees. push_ back(& e); 7 employees. push_ back(& m); 8 9 print_ all( employees); 10 return 0; 11 } Поведението, при което конкретната функция, която се извиква, зависи от динамичния тип на обект, чрез който е извикана, се нарича полиморфизъм или динамично свързване. За да бъде една член-функция полиморфна в C++ е необходимо тя да се декларира като виртуална с помощта на модификатора virtual. Функцията Manager::print() замества (override) функцията в базовия клас Employee::print(); Функцията в базовия клас е дефинирана като виртуална. Това означава, че изборът, коя функция да се извика се определя по време на изпълнение на програмата, в зависимост от действителния тип на променливата. 1 void print_all(vector<employee*>& v){ 2 for(vector<employee*>::iterator 3 it=v.begin(); 4 it!=v.end();++it){ 5 (*it)->print(); 6 } 7 } Когато функция от производния клас, има същата сигнатура като виртуална функция в базовия клас, се казва че тя замества (override) виртуалната функция от базовия клас. Когато се извиква виртуална функция, то автоматично се използва най-подходящият ѝ заместник, в зависимост от действителния тип на извикващия обект class Shape { 2 public: 3 v i r t u a l void draw( void) const=0; 4 }; В ред 3 е дефинирана чисто виртуална функция. Класове, в които са дефинирани една или повече чисто виртуални функции се наричат абстрактни. Не е възможно да се създаде обект от абстрактен клас: Shape s; //error!!! Абстрактните класове се използват за дефиниране на интерфейса на йерархия от класове. 14
8 Чисто виртуалните функции, които не са определени в производните класове остават чисто виртуални. Това означава, че е възможно и базовият и производният клас да бъдат абстрактни. 1 class Shape { 2 public: 3 v i r t u a l void draw( void) const=0; 4 }; 5 6 class Circle: public Shape { 7 Point center_; 8 int radius_; 9 public: 10 Circle(const Point& center, int radius) 11 : center_(center), radius_(radius) 12 {} 1 void draw( void) const { 2 cout << "Circle::draw("; 3 center_.print(); 4 cout << ", " << radius_ << ")" << endl; 5 } 6 }; 7 class Rectangle: public Shape { 8 Point ul_; 9 Point br_; 10 public: 1 Rectangle(const Point& ul, const Point& br) 2 : ul_(ul), br_(br) 3 {} 4 void draw( void) const { 5 cout << "Rectangle::draw("; 6 ul_.print(); 7 cout << ", "; 8 br_.print(); 9 cout << ")" << endl; 11 }; 15 1 class Drawing { 2 list<shape*> shapes_; void draw( void) const { 6 for(list<shape*>::const_iterator 7 it=shapes_.begin(); 8 it!=shapes_.end();++it){ 9 (*it)->draw(); 10 } 11 }; 12 }; Динамично преобразуване C++ поддържа RTTI идентификация на типа по време на изпълнение. RTTI ни дава възможност да идентифицираме истинския тип, към който сочи даден указател. RTTI може да се използва по няколко начина единият е динамичното преобразуване на типовете dynamic_cast<...>(...). 1 void fun(shape* sh){ 2 Circle* pc=dynamic_cast<circle*>(sh); } Когато преобразуването е успешно операторът за динамично преобразуване на типа връща ненулев указател. Динамично преобразуване 1 void fun(shape* sh){ 2 Circle* pc=dynamic_cast<circle*>(sh); 3 i f (pc!=null){ 4 // it s a circle 5 return; 6 } 7 Rectangle* pr = dynamic_cast < Rectangle* >( sh); 8 i f (pr!=null){ 9 // it s a rectangle 10 } 11 } 16
Виртуални функции
Виртуални функции Статично свързване Как компилаторът избира кой метод или коя функция да бъде извикана? Прави се сравнение между формални и фактически параметри и се избира най-точното съвпадение в случай,
ПодробноКласове в 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 Обектно-ориентирана
ПодробноПредефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве
Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision :
Подробно4
Наследяване и 4 Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 11 май 2017 г. Трифон Трифонов (ООП 16/17) Наследяване и голямата
ПодробноДинамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София
Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.3 16 ноември 2004 г. Пример:
ПодробноLush Green
Класове Какво са класовете? Основен инструмент на ООП Средство за дефиниране на абстрактни типове данни Синтактична конструкция, която позволява логическо групиране на данни и операциите над тях Дефиниция
ПодробноДефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София
Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 9 март 2005 г. template< class
ПодробноОбработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re
Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 27 февруари 2005 г. 1 #include < cstdio
ПодробноLush Green
Конструктори Жизнен цикъл на обект За обекта се заделя памет и се свързва с неговото име Извиква се подходящ конструктор на обекта... (достъп до компоненти на обект, изпълняване на операции) Достига се
ПодробноУказатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23
Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели! Калин Георгиев Увод в програмирането 21
ПодробноДинамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр
Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Трифон Трифонов (УП 16/17) Динамична памет 21 декември
ПодробноСериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23
Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 f «data; f» data; Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 2 / 23 Първо изискване:
ПодробноПрограмиране на Паскал
Поради връзката на С++ с езика С в голяма част от литературата е прието записването С/С++. Това е найизползваният език за програмиране в света, поради което синтаксисът на някои от по-новите езици като
Подробно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?
ПодробноСтруктура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор
Структура на програма в C Част 7 - масиви, оператор за индексиране, sizeof оператор Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София
ПодробноВ тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц
В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операции в езикът C и С++. Символ Предназначение Аритметични
ПодробноМИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА
МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА У Ч Е Б Н А П Р О Г Р А М А ЗА ЗАДЪЛЖИТЕЛНА ПРОФЕСИОНАЛНА ПОДГОТОВКА ПО ПРОГРАМИРАНЕ И АЛГОРИТМИЧНИ ЕЗИЦИ ЗА ПРОФЕСИЯ: КОД 482010 ИКОНОМИСТ - ИНФОРМАТИК СПЕЦИАЛНОСТ:
ПодробноC++
Управляващи оператори в C++ Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 18 30 октомври 2018 г. Трифон Трифонов (УП 18/19) Управляващи оператори в C++ 18 30 октомври
ПодробноНАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ , том 48, серия 3.2 Програмна реализация на средство за обработка и визуализация на данни от учебни сеси
Програмна реализация на средство за обработка и визуализация на данни от учебни сесии Октай Кър, Ирина Желязкова Program Implementation of a Tool for for Processing and Visualization of Learning Session
ПодробноКанонична форма на клас или 4 (голямата четворка) Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно и
Канонична форма на клас или 4 (голямата четворка) Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 6 април 2017 г. Трифон Трифонов
Подробно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. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнението представя кратко въведение в теорията на лексическия
ПодробноПотоци (Rev: 1.1)
Потоци (Rev: 1.1) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 Технологическо училище Електронни системи Технически университет, София 8 май 2007 г. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007
ПодробноМаисви
МАСИВИ 1. Структурни типове данни Структура от данни - организирана информация, която може да бъде описана, създадена и обработена с помощта на програма. Скаларни типове данни: Целочислен int Реален double
ПодробноПри изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и
При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) или изменящи се (променливи). Тези данни най-често бива
ПодробноСОФТУЕРНИЯТ ПРОЦЕС
МИНИСТЕРСТВО НА ТРУДА И СОЦИАЛНАТА ПОЛИТИКА ЦЕНТЪР ЗА РАЗВИТИЕ НА ЧОВЕШКИТЕ РЕСУРСИ И РЕГИОНАЛНИ ИНИЦИАТИВИ София 1849, кв. Кремиковци,, тел./факс: +359 2 994 70 18, +359 882 82 66 83, +359 876 24 82 04
Подробно3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението
3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението представя кратко въведение в синтактичния анализ.
Подробно-
Лениво оценяване и програмиране от по-висок ред Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 7 януари 2016 г. Трифон Трифонов (ФП-И 15/16) Лениво оценяване 7 януари 2016 г.
ПодробноMicrosoft Word - VM22 SEC55.doc
Лекция 5 5 Диференциални уравнения от първи ред Основни определения Диференциално уравнение се нарича уравнение в което участват известен брой производни на търсената функция В общия случай ( n) диференциалното
ПодробноИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври
JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври 2008 JAVA ОБЕКТИ Забележка: Тази лекция е адаптация на лекция от курса: 6.092 Java
ПодробноСинтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/
Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/16) Синтаксис за дефиниране на функции 6 януари 2016
ПодробноПрограмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5
Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Литература Необходими програми Kernighan & Ritchie - The C Programming
ПодробноSlide 1
Списъци. Структура и синтаксис. Създаване и показване. Основни операции(добавяне, изваждане на елемент или цял подсписък; подреждане). Трансформации. проф. дмн С. Христова Списъци Списъците / list са основна
ПодробноСтруктура на програма в C - Част 9 - низове от символи, C-string
Структура на програма в C Част 9 - низове от символи, C-string Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 15 май 2019 г. И. Георгиев,
ПодробноУеб системи и технологии - Упражнение 4
УПРАЖНЕНИЕ 4: ВИДОВЕ СИМВОЛИ И ТЯХНОТО ФОРМАТИРАНЕ. СТРУКТУРИРАНЕ И ОФОРМЯНЕ НА ТЕКСТОВЕ. СПИСЪЦИ. Какво се разглежда в тази тема: Параграфи: o Нов параграф ; o Нов ред в текущ параграф .
ПодробноСт. Джиев, Индустриални мрежи за комуникация и управление Системноориентирани спецификации за изграждане на интегрирани индустриални мрежи 2.5.1
2.5. Системноориентирани спецификации за изграждане на интегрирани индустриални мрежи 2.5.1. Спецификация CIP за индустриални мрежи - въведение Спецификацията Common Industrial Protocol (CIP) е пример
Подробноdoll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н
doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката на механични кукли, датиращи от древни времена. Движенията
ПодробноMicrosoft Word - PRMAT sec99.doc
Лекция 9 9 Изследване на функция Растене, намаляване и екстремуми В тази лекция ще изследваме особеностите на релефа на графиката на дадена функция в зависимост от поведението на нейната производна Основните
ПодробноРекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари
Рекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари 2017 г. Трифон Трифонов (УП 16/17) Рекурсия 21.12.16
ПодробноMicrosoft Word - Glava24.doc
2.4. Въведение в езика OQL Обектно ориентираният език на заявките OQL е един опит да се стандартизират обектноориентираните езици на заявките във форма на език, обединяващ в себе си декларативното SQL
ПодробноПроектиране на непрекъснат ПИД - регулатор. Динамичните свойства на системите за автоматично регулиране, при реализация на първия етап от проектиранет
Проектиране на непрекъснат П - регулатор инамичните свойства на системите за автоматично регулиране, при реализация на първия етап от проектирането им, могат да се окажат незадоволителни по отношение на
ПодробноМасиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Триф
и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Трифон Трифонов (УП 16/17) и низове 9 ноември 2016 г. 1 / 5 Логическо
ПодробноПроф
Утвърдил:.. / доц. д-р Е. Великова / Утвърден от Факултетен съвет с протокол... /... СОФИЙСКИ УНИВЕРСИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ Факултет по Математика и Информатика Специалност: Компютърни науки М И К 0
ПодробноОСНОВИ НА ЕЗИКА С# Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за
Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за програмиране. Тя позволява на програмиста да работи на предпочитания
ПодробноСтруктура на програма в C - Част 6 - goto, switch, break и continue клаузи
Структура на програма в C Част 6 - goto, switch, break и continue клаузи Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 21 април
Подробно