
- •1 Сучасні тенденції програмування систем автоматизації
- •1.1. Загальна характеристика та особливості програмування сучасних систем автоматизованого проектування
- •1.2. Порівняльна характеристика середовищ розробки прикладних програм на мові Java
- •2.1. Характеристика класу Calendar
- •2.2. Опис методу getClass()
- •2.3. Приклад використання об’єктів
- •3 Проектна частинина
- •3.1. Опис створення програмного продукту
- •Визначення щорічного прибутку при заданих початкових вкладах
- •3.2. Коротка характеристика використаних у програмі компонентів
- •Висновок
- •Список використаних джерел:
2.2. Опис методу getClass()
У Java відсутнє множинне спадкування. Кожен клас може мати тільки одного батька. Таким чином, ми можемо простежити ланцюжок успадкування від будь-якого класу, піднімаючись усе вище. Існує клас, на якому такий ланцюжок завжди закінчується, це клас Object. Саме від нього успадковуються всі класи, в оголошенні яких явно не зазначений інший батьківський клас. А значить, будь-який клас безпосередньо або через своїх батьків є спадкоємцем Object. Звідси випливає, що методи цього класу є у будь-якого об'єкта (поля у Object відсутні), а тому вони становлять особливий інтерес.
Метод getClass() використовується для доступу до класу об'єкта під час виконання. Метод getClass() представлений в java.lang.Object, тому у будь-якого об'єкта в Java можна запитати його клас. getClass() повертає об'єкт класу java.lang.Class. getClass() один з основних методів. Цей метод повертає об'єкт класу Class, який описує клас, від якого був породжений цей об'єкт. У нього є метод getName() , який повертає ім'я класу:
String s = "abc";
Class cl = s.getClass ();
print (cl.getName ());
Результатом буде рядок:
java.lang.String На відміну від оператора instanceof, метод getClass() завжди повертає точно той клас, від якого був породжений об'єкт.
2.3. Приклад використання об’єктів
Перехід на літній час з використанням класу Сalendar. Якщо поточна дата знаходиться між 2:00 останньої неділі березня і 3:00 останньої неділі жовтня, то час літній. Відзначу, що в перших реалізаціях Java для роботи з датами використовувався безпосередньо клас java.util.Date. Але вже давно більшість його методів позначені як deprecated, тобто їх використання потрібно по максимуму уникати і задіяти набагато більш гнучкий Calendar.
import java.util.Calendar;
import java.util.Date;
...
private static Calendar cldr;
private static boolean summerTime;
static{
cldr = Calendar.getInstance();
cldr.setTimeZone(TimeZone.getTimeZone("Europe/Moscow"));
Calendar c = (Calendar)cldr.clone();
c.set(c.MONTH, c.MARCH);
c.set(c.HOUR_OF_DAY, 2);
for(int i = 31; i > 0; i--){
c.set(c.DAY_OF_MONTH, i);
if(c.get(c.DAY_OF_WEEK) == c.SUNDAY) break;
}
Date inMarch = c.getTime();
c.set(c.MONTH, c.OCTOBER);
c.set(c.HOUR_OF_DAY, 3);
for(int i = 31; i > 0; i--){
c.set(c.DAY_OF_MONTH, i);
if(c.get(c.DAY_OF_WEEK) == c.SUNDAY) break;
}
Date inOctober = c.getTime();
Date now = new Date();
summerTime = now.after(inMarch) && now.before(inOctober);
}
public static boolean isSummerTime(){
return summerTime;
}
Наступна програма демонструє GetClass () (успадкований від Object) і etSuperclass () (з класу):
class X { int a; float b; }
class Y extends X { double c; }
class RTTI { public static void main(String args[]) { X x = new X(); Y y = new Y(); Class clObj; clObj = x.getClass(); // Отримати посилання на Class System.out.println("x – об’єкт типу: " + clObj.getName()); clObj = y.getClass(); // Отримати посилання на Class System.out.println("у – об’єкт типу: " + clObj.getName()); clObj = clObj.getSuperclass(); System.out.println("Суперклас у " + clObj.getName()); } }
Виведення цієї програми показано тут:
x – об’єкт типу: X y – об’єкт типу: Y Суперклас у: X
Отже, даний приклад використовується, щоб визначати діє літній час чи ні.