Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЕВ-4791

.pdf
Скачиваний:
24
Добавлен:
07.03.2016
Размер:
2.52 Mб
Скачать

Тема 3. МЕХАНІЗМИ РОЗРОБЛЕННЯ НОВИХ КЛАСІВ

Вивчивши матеріал теми, студенти знатимуть:

зовнішні та внутрішні прояви класу;

основні складові інтерфейсної частини;

відношення між класами, типи відношень: успадкування, наповнення та використання; відношення типу метаклас;

взаємозв’язок класів та об’єктів;

ключові абстракції класів та об’єктів;

механізми реалізації класів;

принципи побудови ієрархії класів.

Вивчення матеріалу теми допоможе студентам:

визначати класи та об’єкти різних систем програмування;

правильно ідентифікувати класи та об’єкти для конкретного додатка;

оцінювати якість абстракцій за відповідними критеріями: взаємозалежність, зв’язність, достатність, повнота, простота;

організовувати управління процесом об’єктно-орієнтованого проектування.

Студенти зможуть поглибити і закріпити знання з розроблення нових класів:

сутності взаємодії об’єктів усередині класів;

структури процесу передання повідомлень між об’єктами;

операцій з об’єктами;

сутності абстрактного класу;

засобів формування класів;

форми успадкування класів.

3.1. Навчальні завдання для опрацювання самостійної роботи

Мета роботи: сформувати теоретичні погляди на фундаментальні механізми розроблення класів та визначити їх змістову сутність.

Навчальні завдання

1.Схарактеризуйте успадкування та його особливості за використання об’єктної декомпозиції.

2.Проаналізуйте типи відношень між об’єктами: використання, синхронізації, включення.

3.Визначте сутність поняття «клас», зовнішні та внутрішні прояви класу.

4.Схарактеризуйте відношення між класами. Типи відношень: успадкування, використання, наповнення; відношення типу метаклас.

5.Дослідіть взаємозв’язок класів та об’єктів.

6.Визначте роль класів та об’єктів у процесі програмування.

7.Наведіть визначення поліморфізму: простий і складний.

8.Обґрунтуйте механізми реалізації поліморфізму: чистий поліморфізм, перевантаження, раннє зв’язування, поліморфні об’єкти.

9.Опишіть технологію використання механізму композиції.

10.Доведіть важливість механізму наповнення для підключення об’єкта до певного класу.

11.Схарактеризуйте додаткові засоби розроблення класів.

12.Проаналізуйте особливості використання метакласів.

13.Опишіть функціональні характеристики контейнерних класів та інтеграцію їх у проект.

14.У чому полягає процедура делегування методів?

15.Визначте сутність та умови застосування параметризованих класів.

3.2.Завдання для опрацювання індивідуальної роботи

Для закріплення набутих знань і навичок з об’єктної декомпозиції предметної області студентам для індивідуального опрацювання пропонують такі задачі.

Блок І. Організація файлової системи управління навчальним процесом. І.1. Розроблення програмної системи бази даних «Викладачі».

І.2. Розроблення програмної системи бази даних «Студенти».

11

І.3. Розроблення програмної системи бази даних «Факультети». I.4. Розроблення програмної системи бази даних «Спеціальності». І.5. Розроблення програмної системи бази даних «Спеціалізації». І.6. Розроблення програмної системи бази даних «Дисципліни».

І.7. Розроблення програмної системи бази даних «Список населених пунктів». І.8. Розроблення програмної системи бази даних «Кафедри».

І.9. Розроблення програмної системи бази даних «Аудиторії». І.10. Розроблення програмної системи бази даних «Пільги». Блок ІІ. Оперативне управління навчальним процесом.

ІІ.1. Розроблення програмної системи аналізу контингенту студентів за запитами за місцем проживання.

ІІ.2. Розроблення програмної системи аналізу контингенту студентів за запитами за роком народження.

ІІ.3. Розроблення програмної системи аналізу контингенту студентів за запитами за сімейним станом.

ІІ.4. Розроблення програмної системи аналізу контингенту студентів за запитами за успішністю.

ІІ.5. Розроблення програмної системи складання статистичного звіту за зведеним контингентом студентів.

ІІ.6. Розроблення програмної системи формування іспитових відомостей.

ІІ.7. Розроблення програмної системи формування додаткових іспитових відомостей. ІІ.8. Розроблення програмної системи аналітичного аналізу успішності студентів за дис-

циплінами.

ІІ.9. Розроблення програмної системи зведеного аналізу успішності за дисциплінами. ІІ.10. Розроблення програмної системи аналізу успішності студентів за викладачами. ІІ.11. Розроблення програмної системи аналізу успішності студентів за кафедрами.

ІІ.12. Розроблення програмної системи аналізу успішності студентів за факультетами. ІІ.13. Розроблення програмної системи рейтингового аналізу успішності студентів за дис-

циплінами.

ІІ.14. Розроблення програмної системи рейтингового аналізу успішності студентів у групі. ІІ.15. Розроблення програмної системи рейтингового аналізу успішності студентів на курсі. ІІ.16. Розроблення програмної системи рейтингового аналізу успішності студентів на фа-

культеті.

ІІ.17. Розроблення програмної системи обліку студентів за контрактом.

ІІ.18. Розроблення програмної системи обліку студентів-боржників за оплатою за контрактом.

ІІ.19. Розроблення програмної системианалізу складової студентівза контрактом за групами. ІІ.20. Розроблення програмної системианалізу складової студентівза контрактом за курсами. ІІ.21. Розроблення програмної системи розподілу іногородніх студентів у гуртожитку.

ІІ.22. Розроблення програмної системи формування наказу про стипендію.

ІІ.23. Розроблення програмної системи формування перевідних наказів та академвідпусток. ІІ.24. Розроблення програмної системи формування наказів щодо розподілу студентів на

практику.

ІІ.25. Розроблення програмної системи формування наказів про зарахування та відрахування студентів.

ІІ.26. Розроблення програмної системи надання довідок про належність до складу студентів. ІІ.27. Розроблення програмної системи формування додатків до диплома бакалавра. ІІ.28. Розроблення програмної системи формування додатків до диплома магістра.

ІІ.29. Розроблення програмної системи формування навчальної картки студента.

ІІ.30. Розроблення програмної системи формування відомостей про студентів, які отримали диплом з відзнакою.

ІІ.31. Розроблення програмної системи формування відомостей про студентів, які рекомендовані до вступу в аспірантуру.

Блок ІІІ. Планування, аналіз та методичне забезпечення навчального процесу.

ІІІ.1. Розроблення програмної системи формування навчального плану бакалаврів за спеціальностями і формами навчання.

ІІІ.2. Розроблення програмної системи формування навчальних планів магістрів.

12

ІІІ.3. Розроблення програмної системи формування навчальних планів переддипломної підготовки.

ІІІ.4. Розроблення програмної системи формування навчальних планів здобуття другої вищої освіти.

ІІІ.5. Розроблення програмної системи нормативного навантаження за дисциплінами.

ІІІ.6. Розроблення програмної системи педагогічного навантаження за викладачами.

ІІІ.7. Розроблення програмної системи зведеного навантаження за кафедрами факультету.

ІІІ.8. Розроблення програмної системи розподілу навчальних годин за нормативними дисциплінами.

ІІІ.9. Розроблення програмної системи формування робочих планів за нормативними дисциплінами.

ІІІ.10. Розроблення програмної системи аналізу реєстру аудиторного фонду університету.

ІІІ.11. Розроблення програмної системи забезпечення дисципліни штатними викладачами.

ІІІ.12. Розроблення програмної системи аналізу науково-методичного забезпечення дисципліни.

ІІІ.13. Розроблення програмної системи аналізу сервісу дистанційного навчання.

ІІІ.14. Розроблення програмної системи складання плану-графіка навчального процесу.

ІІІ.15. Розроблення програмної системи складання розкладу навчального процесу.

ІІІ.16. Розроблення програмної системи актуалізації розкладу навчального процесу.

ІІІ.17. Розроблення програмної системи аналізу контингенту викладачів за роком народження.

ІІІ.18. Розроблення програмної системи аналізу контингенту викладачів за місцем проживання.

ІІІ.19. Розроблення програмної системи аналізу контингенту викладачів за сімейним станом.

ІІІ.20. Розроблення програмної системи аналізу викладачів за науковим і педагогічним напрямами та стажем.

ІІІ.21. Розроблення програмної системи аналізу закріплення викладачів за кафедрами.

ІІІ.22. Розроблення програмної системи формування статистичного звіту за зведеним контингентом викладачів.

ІІІ.23. Розроблення програмної системи формування додаткової інформації за запитом.

Рекомендована література [3; 4; 9; 16].

13

Тема 4. ОСНОВНІ ЕЛЕМЕНТИ СИСТЕМИ ПРОГРАМУВАННЯ МОВОЮ JAVA

Вивчивши матеріал теми, студенти знатимуть:

особливості мови програмування Java: структуру простої програми мовою Java: як створювати об’єкт; примітивні типи і масиви;

області бачення і знищення об’єктів; як створювати власні класи;

функції, параметри і значення, що повертаються; коментарі та вбудовану документацію; технологію виконання програми мовою Java;

середовище для компіляції та створення додатків JDK.

Вивчення матеріалу теми допоможе студентам:

класифікувати утиліти командного рядка для компілятора мови Java;

аналізувати результати дії компілятора та інтерпретатора мови Java;

виявляти недоліки й імовірні помилки за результатами компіляції;

розробляти заходи з коригування наявних програм;

виконувати процедуру формування простої програми мовою Java.

4.1.Навчальні завдання для опрацювання самостійної роботи

Мета роботи: сформувати теоретичні погляди на фундаментальні конструкції мови Java та визначити технологію складання і виконання програм простої структури.

План

1.Основний набір засобів для розроблення Java-програм (компоненти JDK).

2.Дослідження компонентів SDK: компілятор Java, інтерпретатор та відлагодження.

3.Типова структура і склад простої програми мовою Java.

4.Запуск Java-додатків.

5.Тестування аплету.

6.Відлагодження коду Java-програм. Утиліта jdb.

7.Створення документації.

4.2.Навчальні завдання для виконання лабораторної роботи

Індивідуальне виконання лабораторної роботи кожним студентом передбачає закріплення на практиці теоретичних знань з основних питань теми, що вивчається.

Лабораторна робота № 1

«Технологія виконання простого додатка в середовищі JDK»

Мета роботи: закріпити теоретичні положення в практичних діях формування та виконання додатка мовою Java в середовищі JDK різних версій і послідовність виконання компіляції, інтерпретації та налагодження додатка.

Шляхи досягнення мети: для досягнення поставленої мети слід виконати такі дії.

За допомогою будь-якого редактора текстів чи блокнота сформувати готовий приклад додатка, який запропонує викладач. Такий файл повинен мати розширення *.java; тут * — ім’я файла, яке повинне чітко збігатися з ім’ям класу методу main().

2.Виконати компіляцію створеного файла. В разі існування повідомлень про помилки виправити їх та запустити скоригований файл на повторну компіляцію. Результатом вдалої компіляції буде відсутність повідомлень про помилки та наявність створеного файла з розширенням class.

3.Запустити інтерпретатор мови Java. Результати його виконання є результатами дії створеного додатка. У разі виникнення різноманітних повідомлень скористатися опціями інтерпретатора та іншими додатковим інструментами.

14

4. За результатами виконання скласти звіт з лабораторної роботи, що має включати: 1) титульну сторінку встановленого зразка (додаток 1);

2)першу сторінку, на якій слід зазначити:

— назву роботи;

— мету лабораторної роботи;

— шляхивиконаннялабораторноїроботи(розширений план поступового виконання роботи);

3)сторінки починаючи від 2-ї, повинні мати:

перелік усіх опцій компілятора та їх опис;

перелік усіх опцій інтерпретатора, конкретний опис та умови їх застосування;

текст або тексти програм мовою Java, які запропоновані викладачем, і технологію їх виконання.

 

Приклади для виконання

 

Програма 1. Створення екземпляра класу.

 

 

//Оголошення класу DateClass

 

 

class DateClass {

 

 

 

int month;

 

 

 

int day;

 

 

 

int year;

 

 

 

public DateClass(int m, int d, int y) {

 

 

month = m;

 

 

 

day = d;

 

 

 

year = y; }

 

 

 

public void Display() {

 

}

}

System.out.println(month + "/" + day + "/" + year);

//Оголошення головного класу програми

 

 

class DateObject {

 

 

 

public static void main(String args[]) {

 

 

//Створення і використання об’єкта класу DateClass

 

DateClass birthday = new DateClass (7, 18 ,64);

 

 

birthday.Display();

 

 

 

//Створення і використання ще одного об’єкта DateClass

 

DateClass future = new DateClass (1, 1, 01);

 

 

future.Display(); }

}

 

 

Реалізація програми

Програма 2. Імпорт класу

//Імпорт класу Date import java.util.Date;

//Використання класу Date class DateDemo {

public static void main(String args[]) { Date today = new Date(); System.out.println(today.toString()); Date future = new Date ("5/3/2006");

System.out.println (future.toString()); } }

Реалізація програми

Програма 3. Виведення рядка class OutputDemo {

public static void main (String args[]) {

15

StringBuffer s = new StringBuffer(); for (char c = ‘A’; c <= ‘Z’; c++) {

s.append(c);

}

}

}

System.out.println (s);

Реалізація програми

Програма 4. Аргументи командного рядка

 

 

 

 

class MyTest {

 

 

 

 

 

public static void main (String args[]) {

 

 

 

 

 

String a1=" ";

 

 

 

 

 

Integer a2= new Integer(0);

 

 

 

 

 

//Створення та ініціалізація об’єкта

 

 

 

 

 

if (args.length<2)

 

 

 

 

 

System.out.print("Out of parametrs");

 

 

 

 

 

//Параметри відсутні

 

 

 

 

 

else { a1=args[0];

 

 

 

 

 

//Перший аргумент

}

 

 

 

 

try { a2=Integer.valueOf(args[1]);

 

 

 

 

//Другий аргумент: перетворення на число

 

 

 

 

catch (NumberFormat Exception e) {

 

}

}

}

}

System.out.print("Exception NumberFormat Exception");

Реалізація програми

Звіт з цієї частини лабораторної роботи захищають разом із файлом = оригіналом в електронному вигляді.

Критерії оцінювання виконання і захисту лабораторної роботи. Максимальна оцінка за виконання лабораторної роботи — 6 балів. Шкала оцінок: 0, 2, 4 і 6 балів.

Оцінку знижують:

а) за неповноту наданих результатів чи припущені в них помилки; б) за неякісне оформлення і невчасне подання звітів;

в) за некоректність відповідей на контрольні запитання під час захисту звітів.

4.3.Навчальні завдання для опрацювання самостійної роботи

1.Для коду з класом ATypeName {/*Тіло класу*/} створити програму, придатну для компіляції та запуску.

2.Використовуючи клас DataOnly {int i; float f; Boolean b;}, створити програму, придатну для компіляції та запуску.

3.За допомогою класу DataOnly змінним з цього класу присвоїти значення, а потім надрукувати їх у методі main().

4.Скласти програму, що включає метод storage():

int storage(String s) { return s.length() * 2; }.

5. Скласти програму, придатну для компіляції та запуску, що має фрагмент коду з класом

StaticFun:

сlass StaticFun {

static void incr() {StaticTest.i++; }}.

16

6.Скласти програму, що друкує три фрагменти командного рядка. При складанні програми використовувати масив рядків String[].

7.Скласти програму, що придатна для виконання і використовує клас AllTheColorsOf TheRainbow:

сlass AllTheColorsOfTheRainbow { іnt anIntegerRepresentingColors;

void changeTheHueOfTheColors(int new Hue()) { //…

}

//…

}

8. Для програми HelloDate.java

іmport java.util.*; public class HelloDate {

public static void main(String[] args) { System.out.println(«Hi, itIs me!»); System.out.println(new Date());

}

} ///:~

Виконати команду javadoc і проглянути результат за допомогою Web-браузера.

9.Записати клас docTest у файл, який можна скомпілювати, а потім «пропустити» його через javadoс.

10.Додати список НТМL з підпунктами до документації, створеної у завданні 9.

11.Скомпілювати програму:

іmport java.util.*; public class HelloDate {

public static void main(String[] args) { System.out.println(«Hi, it is me!»); System.out.println(new Date());

}

}

Якщо замість JDK використовувати інше середовище розроблення програми, треба виконати компіляцію і запуск програми з цього середовища.

12. До програми з прикладу 11 додайте документацію в коментарях. Вилучити цю документацію з НТМL-файла за допомогою javadoс, а отриману сторінку переглянути за допомогою Web-браузера.

4.4. Контрольні приклади для тестування знань теми

Приклад 1. АРГУМЕНТИ КОМАНДНОГО РЯДКА class MyTest {

public static void main(String args[]) { String a1=« «;

Integer a2=new Integer(0); //Створення та ініціалізація об’єкта if (args.length<2)

System.out.print(«Out of parameters»); //Параметри відсутні else

{a1=args[0]; Перший аргумент try {

a2=Integer.value0f(args[1]); //Другий аргумент: перетворення на число

}

catch (NumberFormatException e) {

System.out.print («Exception NumberFormatException»);}

}

}

}

17

Приклад 2. Програма визначення примітивних даних мовою Java

//Для виконання необхідно створити HTML-файл, який містить такий текст:

<applet code = «ClassName.class» width=200 height=100>

//Наступні дві строки використовуються для передачі параметрів аплета

<param name=«papam1» value = «123»> <param name=«papam2» value = «ABC»> </applet>

import java.awt.*; import java.applet.*;

public class ClassName extends Applet { public void paint (Graphics g)

{

g.drawString(«Це аплет», 30, 30)

}

public void init() {Перший метод класу, що виконується}

}

Початкові значення за замовчуванням class Measurement { boolean t;

char c; byte b; short s; int i; long l; float f; double d;

void print() { System.out.println(

«Тип даних Початкові значення\n»+

«boolean

«+t+»\n»+

«char

[«+c+»]»+(int)c+»\n»+

«byte

«+b+»\n»+

«short

«+s+»\n»+

«int

«+i+»\n»+

«long

«+l+»\n»+

«float

«+f+»\n»+

«double

«+d);

}

 

}

 

public class InitValue {

public static void main (String args[]) { Measurement d=new Measurement(); d.print();

new Measurement().print();

}

}

class Measurement { boolean t=true;

char c =‘y’; byte b=0; short s=0xff; int i=999; long l=4l; float f=3.14f;

double d= 2.718914d;}

18

4.5. Розв’язування типових завдань

Виконання простих програм у середовищі jdk1.7.0 та jdk1.6.0:

Текст програми 1:

class Cleanser {

private String s = new String("Cleanser"); public void append(String a) {s += a;} public void dilute() {append(" dilute()");} public void apply() {append(" apply()");} public void scrub() {append(" scrub()");} public void print(){System.out.println(s);} public static void main (String[] args) { Cleanser x = new Cleanser();

x.dilute(); x.apply(); x.scrub(); x.print();

}

}

class Detergent extends Cleanser { //zminuemo method

public void scrub() {

append ("Detegrent.scrub()"); super.scrub();

}

//dodad nov metodi

public void foam() { append(" foam()"); }

// Perviryaemonoviy

public static void main(String[] args) { Detergent x = new Detergent();

x.dilute(); x.apply(); x.scrub(); x.foam(); x.print(); System.out.println("Pereviryaemobazoviyklas"); Cleanser.main(args);

}

}

Текст програми 2:

public class Flower { int petal Count = 0;

String s = new String("null"); Flower (int petals) {

System.out.println ("Konstructortilki z parametromint, petalCount = " + petalCount);

}

Flower(Strings s){

System.out.println ("Konstructortilkizistrokou s = " + ss); s = ss;

}

Flower (String s, int petals){ this(petals);

this.s = s;

System.out.println ("ParametriString&int ");

}Flower(){ this("Vitau", 47);

System.out.println("Konstructor za zamovchuvannyam bez parametriv");

}void print(){

System.out.println("petalCount " + petalCount + "s " + s); } public static void main (String[] args) {

Flower x = new Flower(); x.print();

}

}

19

Рекомендована література [12; 15].

20