Обектно-ориентирано програмиране БСУ - Бургас - IV курс [по факултетни номера] Курсова задача [27.11.2000] Да се моделира дадения в задачата "реален" обект с неговите свойства като се използват класове. Да се създадат най-малко 2 класа, свързани с наследственост. Базовият клас трябва да съдържа поне една функция. Производният клас трябва да има следните членове: - констуктор и деструктор, - set и get функции, - print функция, извеждаща на екрана в подходящ вид членовете-данни на класа, - функциите, описани в конкретната задача, - предефиниране на операцията, описана в задачата. Да се демонстрира: - създаване и унищожаване на обекти - работата на член-функциите на класа - работа на програмата с подходящи тестови примери Това са минималните изисквания за съдържанието на курсовата задача -- за 5 точки при добро изпълнение. Допълнително количество точки могат да се получат, ако се използват още техники на ООП като: - член на класа от тип указател - използване на указател this - статични членове на клас - предефиниране на унарни и бинарни операции - предефиниране на потоковите операции - използване на индиректни базисни класове - предефиниране на членове от базисния клас в производния клас - виртуални функции - динамично и статично свързване на обекти с член-функции от различни класове - шаблони - обработка на изключения Съкращения: БК - базов клас, ПК - производен клас --------------------------------------------------------------------------- Задачи: 97040002 БК - точка в равнината ПК - окръжност в равнината, зададена с център и радиус функция - намиране на пресечните точки на окръжността с координатните оси операция - събиране (+) - резултатът е най-малката окръжност, съдържаща две дадени. 97040004 БК - време (час, минути, секунди) ПК - телевизионно предаване: ден, време, име на предаването функция - при зададено време връща името на предаването, ако вримито съвпадат с това на обекта операция - сравнение (>=) по времето <телевизионно предаване> >= <телевизионно предаване> дава 0 или 1 97040005 БК - точка в равнината ПК - квадрат със страни, успоредни на координатните оси, зададен с центъра си и дължината на страната си функция - разстоянието от центъра на квадрата до началото на координатната система операция - пресечния квадрат на два квадрата (/). <квадрат>/<квадрат> дава <квадрат> 97040007 БК - дата ПК - шофьорска книжка, съдържаща следните данни: име, презиме и фамилия, ЕГН, дата до която книжката е валидна и категория на водача функция - проверка на валидността на книжката: при въвеждане на дата, извежда 0, ако книжката е невалидна на тази дата операция - потоков изход (<<): отпечатва ими, презиме и фамилия и дата 97040008 БК - вид стока (в склад) - наименование на стоката ПК - стока: вид стока, количество, единична цена функция - връща стойността на цялата стока от даден вид операция - (--) намалява количеството на стоката с 1 <стока>-- дава <стока> 97040011 БК - дата ПК - лек автомобил с характеристики: модел, дата на регистрация, година на производство, цвят, обем на двигателя функция - при зададена дата, връща колко са годините между производството и регистрацията операция - сравнения на два автомобила (>=) относно обем на двигателя. <автомобил> >= <автомобил> дава 0 или 1 97040012 БК - е-mail адрес ПК - "приятел": име, е-mail адрес, псевдоним функция - при зададен низ - част от е-mail адрес, връща 1, ако низът е част от него, иначе - 0 операция - проверка за синтаксис на (!) на е-mail адрес !<е-mail адрес> дава 0 или 1 97040019 БК - време (час, минути, секунди) ПК - заминаващ влак: време, заминава за, вид на влака функция - връща 1 или 0 в зависимост дали времето на заминаване е сутрин (p.m.) или слeд обяд (p.m.) операция - сравнение за различно (!=) по "заминава за" <заминаващ влак> != <заминаващ влак> дава 0 или 1 97040023 БК - окръжност в равнината ПК - кръг и точка в равнината функция - проверка дали точката лежи в кръга операция - отрицание (~) - точката става центърът на кръга, а центъра на кръга - точката. ~<кръг и точка> дава <кръг и точка> 97040028 БК - низ (с произволна дължина), съдържащ десетични цифри ПК - БК и цяло число функция - връща низ, който се състои от цифрите на цялото число операция - "обръщане" (-) низът и числото си "разменят местата" - <БК и цяло число> дава <БК и цяло число> 97040029 БК - име, презиме и фамилия на човек ПК - БК и ЕГН функция - сравнява 2-ма души - ако ЕГН-тата са равни, трябва и имената да съвпадат операция - сравнение (>) по възраст <БК и ЕГН> > <БК и ЕГН> дава 0 или 1 97040031 БК - права в равнината ПК - права и точка в равнината функция - разстоянието от правата до точката операция - пресечна точка на две прави (||) <права и тчка> || <права и точка> дава <точка> 97040034 БК - окръжност в равнината ПК - окръжност и права в равнината функция - проверка дали окръжността пресича правата операция - завъртане (&) на правата около центъра на окръжността на даден ъгъл <окръжност и права> & <число> дава <окръжност и права> 97040035 БК - точка в равнината ПК - отсечка с краища зададена точка и координатното начало функция - завъртане на отсечката на даден ъгъл относно началото операция - сравнение (>=) на отсечки по дължина <отсечка> >= <отсечка> дава 0 или 1 97040038 БК - време (час, минути, секунди) ПК - лекция: ден от седмицата, време, име на учебна дисциплина функция - при зададен ден връща името на дисциплината, ако денят съвпада с този на обекта, иначе връща празен низ операция - сравнение (>=) по деня и времето <лекция> >= <лекция> дава 0 или 1 97040040 БК - права в пространството ПК - равнина в пространството, зададена с права и точка функция - при зададени 2 равнини, дава пресечната им правата операция - пресечна точка (/) на права и равнина <права> / <равнина> дава <точка> 97040042 БК - точка в пространството ПК - права в пространството, зададена с 2 точки функция - при зададена точка, показва дали точката е на правата операция - успоредност на прави (==) <права> == <права> дава 0 или 1 97040046 БК - дата ПК - "приятел": име, презиме и фамилия, рожден ден функция - при зададен низ - част от име връща 1, ако низът е част от името, презимето или фамилията, иначе - 0 операция - сравнение (>=) по дата <приятел> >= <приятел> дава 0 или 1 97040048 БК - телефонен номер (xxx-yy-zz) ПК - телефонен абонат: име, призиме, фамилия, телефонен номер функция - при зададени двойка цифри връща номера, ако те са yy или zz на номера операция - сравнение (==) за равни телефонни номера <телефонен абонат> == <телефонен абонат> дава 1 или 0 97040049 БК - дата ПК - студентски изпит: име на дисциплината, дата за изпита, курс, семестър функция - при зададени курс и семестър връща името на дисциплината, ако те съвпадат с тези на обекта операция - сравнение (>=) по датите за изпит <студентски изпит> >= <студентски изпит> дава 0 или 1 97040054 БК - точка в пространството ПК - сфера и права в пространството функция - повърхнина на сферата операция - проверка дали сферата пресича правата (&) & <сфера и права> дава 0 или 1 97040057 БК - точка в равнината ПК - три точки в равнината функция - лице на триъгълника, определен от тези точки операция - унарен минус (-) - резултатът са 3 точки, средите на отсечките, свързващи дадените точки - <три точки> дава <три точки> 97040060 БК - икономична скорост на автомобил и разход на гориво за тази скорост ПК - лек автомобил: БК, марка, модел, обем на двигател функция - връща отношение разход на гориво към обем на двигател операция - сравнение (>) по разход на гориво-скорост <лек автомобил> > <лек автомобил> дава 0 или 1 97040063 БК - матрица 2х2 ПК - матрица 2х2 M и число r функция - връща 0 или 1 в зависимост от това, дали числото се среща като елемент на матрицата операция - умножение с число (*) по долното правило <число> * дава <число*M, число*r> 97040073 БК - дата, час ПК - бележка: дата, час, име на ангажимент функция - при зададен низ - част от име връща 1, ако низът е част от името на ангажимент, иначе - 0 операция - сравнение (>=) по дата и час < бележка> >= < бележка> дава 0 или 1 97040074 БК - време (час, минути, секунди) и дата ПК - самолетен полет: време и дата, заминава за, вид на самолета функция - връща 1 или 0 в зависимост дали времето на полета е сутрин (p.m.) или слeд обяд (p.m.) операция - сравнение (==) по заминава за <самолетен полет> == <самолетен полет> дава 0 или 1 97040076 БК - дата ПК - паспорт, съдържащ следните данни: име, презиме и фамилия, народност, дата на раждане, ЕГН функция - проверка за съответствие на ЕГН и дата на раждане операция - предефиниране на изходен поток (<<), като отпечатва ими, презиме и фамилия и ЕГН. 97040077 БК - вид на компоненти за компютър (памет, дънна платка, ...) ПК - ред от ценова листа: вид на компонент, конкретно име, цени на едро и дребно функция - връща разликата между цена на едро и цена на дребно операция - (--) намалява цените с 10% <ред от ценова листа>-- дава <ред от ценова листа> 97040078 БК - точка в пространството ПК - равнина в пространството, зададена от точка и нормален вектор функция - проверка дали 2 равнини са успоредни операция - проверка (==) дали 2 равнини са перпендикулярни <равнина> == <равнина> дава 0 или 1