Теми рефератів
Авіація та космонавтика Банківська справа Безпека життєдіяльності Біографії Біологія Біологія і хімія Біржова справа Ботаніка та сільське гос-во Бухгалтерський облік і аудит Військова кафедра Географія
Геодезія Геологія Держава та право Журналістика Видавнича справа та поліграфія Іноземна мова Інформатика Інформатика, програмування Історія Історія техніки Комунікації і зв'язок Краєзнавство та етнографія Короткий зміст творів Кулінарія Культура та мистецтво Культурологія Зарубіжна література Російська мова Маркетинг Математика Медицина, здоров'я Медичні науки Міжнародні відносини Менеджмент Москвоведение Музика Податки, оподаткування Наука і техніка Решта реферати Педагогіка Політологія Право Право, юриспруденція Промисловість, виробництво Психологія Педагогіка Радіоелектроніка Реклама Релігія і міфологія Сексологія Соціологія Будівництво Митна система Технологія Транспорт Фізика Фізкультура і спорт Філософія Фінансові науки Хімія Екологія Економіка Економіко-математичне моделювання Етика Юриспруденція Мовознавство Мовознавство, філологія Контакти
Українські реферати та твори » Информатика, программирование » Програмування на Java

Реферат Програмування на Java

Контрольна робота

Програмування на Java (теорія)


ЗМІСТ

1. Динамічна ініціалізація об'єктів

2. Читання і запис файлів


1. Динамічна ініціалізація об'єктів

Об'єкти в Java створюються за допомогою зарезервованого слова new, після якого йде конструктор - спеціальна підпрограма, що займається створенням об'єкта і ініціалізацією полів створюваного об'єкта. Для нього не вказується тип значення, що повертається, і він не є ні методом об'єкта (викликається через ім'я класу коли об'єкту ще немає), ні методом класу (в конструкторі доступний об'єкт і його поля через посилання this). Насправді конструктор в поєднанні з оператором new повертає посилання на створюваний об'єкт і може вважатися особливим видом методів, що з'єднує в собі риси методів класу і методів об'єкта.

Якщо в об'єкті при створенні не потрібна ніяка додаткова ініціалізація, можна використовувати конструктор, який за замовчуванням присутній для кожного класу. Це ім'я класу, після якого ставляться порожні круглі дужки - без списку параметрів. Такий конструктор при розробці класу ставити не треба, він присутній автоматично. Якщо потрібно ініціалізація, зазвичай застосовують конструктори зі списком параметрів.

Порядок викликів при створенні об'єкта нікого класу (будемо називати його дочірнім класом):

1. Створюється об'єкт, в якому всі поля даних мають значення за замовчуванням (нулі на двійковому рівні уявлення).

2. Викликається конструктор дочірнього класу.

3. Конструктор дочірнього класу викликає конструктор батька (безпосереднього прародителя), а також по ланцюжку всі прабатьківські конструктори і ініціалізації полів, заданих в цих класах, аж до класу Object.

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

5. Виконується тіло конструктора батьківського класу.

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

7. Виконується тіло конструктора дочірнього класу.

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

Як правило, для ініціалізації полів складно влаштованих об'єктів використовують конструктори. Але крім них в Java, на відміну від більшості інших мов програмування, для цих цілей можуть також служити блоки ініціалізації класу і блоки ініціалізації об'єкта. Синтаксис завдання класів з блоками ініціалізації наступний:

Модифікатори class ІмяКласса extends ІмяРодітеля {

Завдання полів;

static {

тіло блоку ініціалізації класу

}

{

тіло блоку ініціалізації об'єкту

}

Завдання підпрограм - методів класу, методів об'єкта, конструкторів

}

Блоків ініціалізації класу і блоків ініціалізації об'єкта може бути декілька.

Порядок виконання операторів при наявності блоків ініціалізації головного класу додатка (Містить метод main):

1. ініціалізація полів даних і виконання блоків ініціалізації класу (в порядку запису в декларації класу);

2. метод main;

3. виконання блоків ініціалізації об'єкту;

4. виконання тіла конструктора класу.

Для інших класів порядок аналогічний, але без виклику методу main:

1. ініціалізація полів даних і виконання блоків ініціалізації класу (в порядку запису в декларації класу);

2. виконання блоків ініціалізації об'єкту;

3. виконання тіла конструктора класу.

Чим краще користуватися, блоками ініціалізації або конструкторами? Відповідь, звичайно, неоднозначний: в одних ситуаціях - конструкторами, в інших - блоками ініціалізації. Для додання початкових значень змінним класу у випадках, коли для цього потрібні складні алгоритми, можна користуватися тільки статичними блоками ініціалізації. Для ініціалізації полів об'єктів у загальному випадку краще користуватися конструкторами, але якщо необхідно виконати якийсь код ініціалізації до виклику успадкованого конструктора, можна скористатися блоком динамічної ініціалізації.

Наведемо кілька прикладів. Програма SmallSquares (маленькі квадрати) повертає квадрат маленького цілого числа. SmallSquares має дві статичні змінні і єдину відкриту статичну функцію getSquare ().

public class SmallSquares {

private static final int LIMIT = 10;

private static final int [] square = new int [LIMIT];

public SmallSquares () {

for (Int i = 0; i

square [i] = I * i;

}

}

}

public static int getSquare (int i) {

return square [i];

}

public static void main (String [] args) {

new SmallSquares ();

System.out.println ("3 squared is "+

getSquare (3));

}

}

відкомпілювати і запустивши SmallSquares, отримаємо наступний результат:

3 squared is 9 (3 в квадраті буде 9)

У даному коді об'єкт створюється за допомогою конструктора так званим статичним методом.

Наведемо приклад статичної ініціалізації. За словом статичний (static) слід блок коду, оточеного фігурними дужками. Можна використовувати статичний блок для ініціалізації масиву квадратів наступним чином:

static {

for (Int i = 0; i

square [i] = i * i;

}

}

Статичний блок запитується тільки один раз під час створення класу. Тепер не потрібний конструктор, і можна викликати статичну функцію getSquare () без попереднього створення класу. Покращений код виглядає наступним чином:

public class SmallSquares {

private static final int LIMIT = 10;

private static final int [] square = new int [LIMIT];

static {

for (Int i = 0; i

square [i] = I * i;

}

}

public static int getSquare (int i) {

// Ні обробки помилки, припустимо, 0 <= i

return square [i];

}

public static void main (String [] args) {

System.out.println ("3 squared is "+ getSquare (3));

}

}

Наведемо приклад застосування блоку динамічної ініціалізації. Код в програмі, ConstructorExample (приклад конструктора), знову ініціалізує масив цілих чисел. Існує дві версії конструктора. Перша - конструктор без аргументу, який за замовчуванням визначає значення "Безіменний" ("Anonymous"). У другій версії є один аргумент: значення ім'я користувача (userName). Конструктори об'єднані, так як квадрат повинен ініціалізуватися в кожному випадку.


public class ConstructorExample {

private final String userName;

private final static int [] square = new int [10];

public ConstructorExample () {

this ("Anonymous");

}

public ConstructorExample (String userName) {

this.userName = UserName;

for (Int i = 0; i <10; i + +) {

square [i] = I * i;

}

}

public void printSquare (int i) {

// no error handling - assume 0 <= i

System.out.println ("Hello "+ UserName);

System.out.println (i + "Squared is" + square [i]);

}

public static void main (String [] args) {

new ConstructorExample (). PrintSquare (3);

new ConstructorExample ("Ed"). PrintSquare (5);

}

}

Відкомпілюємо і запустимо ConstructorExample. В результаті отримаємо наступний результат:

Hello Anonymous (привіт Безіменний)

3 squared is 9 (3 в квадраті буде 9)

Hello Ed (Привіт Ед)

5 squared is 25 (5 в квадраті буде 25)

У наведеному вище прикладі квадрат ініціалізується не правильно в залежност...


Страница 1 из 4Следующая страница

Друкувати реферат
Замовити реферат
Реклама
Наверх Зворотнiй зв'язок