Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова


НазваJava – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова
Дата конвертації11.04.2013
Розмір445 b.
ТипКонцепція



Java – повністю об’єктно-орієнтована мова.

  • Java – повністю об’єктно-орієнтована мова.

  • Немає множинного спадкування класів.

  • Доступ до екземплярів класів здійснюється виключно через указники на них.

  • Відсутній аналог delete.

  • Методи класу можуть бути перевантажені, розрізнення – за сигнатурою.

  • В класі немає можливості визначати операції.

  • Параметри методів передаються за значенням, змінити це неможливо.

  • Поліморфізм: методи віртуальні (крім окремих випадків); змінити це неможливо.



Generics.

  • Generics.

  • Блоки ініціалізації.

  • Вводяться інтерфейси як абстракція, що тільки декларує поведінку, але не визначає її.

  • На вершині ієрархії – клас Object.

  • Розвинені засоби RTTI та інтроспекції.

  • Вводяться вкладені (внутрішні) класи – в тому числі анонімні.

  • Концепція контрольованих виключень.



Поняття класу та об’єкту в Java в цілому співпадає з загальноприйнятим.

  • Поняття класу та об’єкту в Java в цілому співпадає з загальноприйнятим.

  • Опис:

  • class KlName {

  • члени класу: поля і методи

  • }

  • Опис класу може супроводжуватися модифікатором public (загальнодоступні). Якщо без - доступ за замовченням; доступний в межах свого пакету. Деякі особливості мають т.зв. внутрішні класи (класи, що є членами інших класів).



За допомогою оператора new:

  • За допомогою оператора new:

  • Kl ekz=new KlName(параметри);

  • І за синтаксисом, і за семантикою це виклик конструктора - спеціального методу, який описує, які дії повинні виконуватися при ініціалізації об’єкта.

  • Java гарантує, що конструктор класу буде викликатися при кожному створенні екземпляру класу.

  • Синтаксично - метод, ім’я якого співпадає з іменем класу. Нічого не повертає (навіть void).

  • Оператор new розміщує в динамічній пам’яті новий, але ще неініціалізований об’єкт. Після цього викликається конструктор.



Конструктори можуть бути перевантажені (як і інші методи) - тобто в класі може бути декілька конструкторів.

  • Конструктори можуть бути перевантажені (як і інші методи) - тобто в класі може бути декілька конструкторів.

  • Якщо конструкторів немає - надається конструктор за замовченням.

  • Але, якщо в класі є хоча б один конструктор - конструктор за замовченням не надається.

  • Один конструктор може бути викликаний з іншого за допомогою виклику this(…). Цей виклик повинен міститися на початку конструктора.



Перевантаження операцій в Java немає.

  • Перевантаження операцій в Java немає.

  • Методи класу можуть бути перевантажені. Це означає, що в одному класі може бути кілька методів з однаковим іменем; їх розрізнення здійснюється за кількістю і типом аргументів.



class K1 extends K2 {

  • class K1 extends K2 {

  • . . .

  • }

  • К1-підклас; К2-суперклас.



Ключова особливість - Java не підтримує множинного успадкування.

  • Ключова особливість - Java не підтримує множинного успадкування.

  • Деякі можливості, характерні для множинного спадкування, можна реалізувати на основі інтерфейсів та внутрішніх класів.



На вершині ієрархії. Суперклас для всіх класів.

  • На вершині ієрархії. Суперклас для всіх класів.

  • Аргументи методів та значення, що ними повертаються, часто бувають типу Object. Часто необхідним є знижуюче (звужуюче) перетворення.



toString() - отримує рядкове подання об’єкта. Як правило, перевизначається в підкласах. Тісно пов’язаний з методом System.out.println(об’єкт);

  • toString() - отримує рядкове подання об’єкта. Як правило, перевизначається в підкласах. Тісно пов’язаний з методом System.out.println(об’єкт);

  • equals(об’єкт) - тотожність посилань. Також часто перевизначається;

  • метод clone().



public - загальнодоступні, точніше - доступні скрізь, де доступний сам клас.

  • public - загальнодоступні, точніше - доступні скрізь, де доступний сам клас.

  • protected - для класів у тому ж пакеті, а також для підкласів;

  • пакетний (за замовченням) - для класів у тому ж пакеті;

  • private - тільки для класу, в якому вони визначені.



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

  • Як наслідок загального принципу інкапсуляції, поля класу рекомендується оголошувати як приватні.

  • Доступ до них в такому разі рекомендується здійснювати через методи.



Чи може конструктор класу бути приватним?

  • Чи може конструктор класу бути приватним?





Нове визначення методу не може звужувати права доступу до нього.

  • Нове визначення методу не може звужувати права доступу до нього.



для змінних: оголошення константи;

  • для змінних: оголошення константи;

  • для класів - клас не може мати підкласів;

  • для методів - метод не може бути перевизначений у підкласах.



this - указник на даний екземпляр.

  • this - указник на даний екземпляр.

  • Передається методам екземпляра (нестатичним методам) як неявний параметр.

  • Одне з типових використань - в конструкторах.

  • super - посилання на екземпляр суперкласу. Теж носить нестатичний характер.



Модифікатор static.

  • Модифікатор static.

  • Поля і методи класу, а не екземпляру.

  • Для статичних полів - одна копія для всіх екземплярів; для нестатичних - кожний екземпляр має свою копію. Одне з типових використань - підрахунок кількості екземплярів класу.

  • Виклик - через ім’я класу (хоча можна і через ім’я екземпляра).

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



Статичні методи не можуть звертатися до нестатичних методів та полів.

  • Статичні методи не можуть звертатися до нестатичних методів та полів.

  • Статичні методи не можуть посилатися на this та super.



конструктори;

  • конструктори;

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

  • блоки ініціалізації (нестатичні) - просто блоки у тілі класу, обмежені фігурними дужками. Також автоматично додаються до конструктора;

  • блоки статичної ініціалізації - блоки, перед якими стоїть слово static. Виконуються перед викликом конструкторів та будь-яких інших методів.



Якщо ініціалізація в коді не здійснюється, поля класу ініціалізуються значеннями за замовченням.

  • Якщо ініціалізація в коді не здійснюється, поля класу ініціалізуються значеннями за замовченням.



Гарантується, що конструктор класу буде викликатися кожний раз при створенні екземпляра підкласу.

  • Гарантується, що конструктор класу буде викликатися кожний раз при створенні екземпляра підкласу.

  • Тому: на початок конструктора підкласу автоматично вставляється виклик конструктора суперкласу без параметрів. Якщо такого немає і конструктор суперкласу за замовченням не надається - помилка компіляції.

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



Т.ч., ланцюжки викликів конструкторів, аж до класу Object.

  • Т.ч., ланцюжки викликів конструкторів, аж до класу Object.

  • Конструктор суперкласу можна викликати явно на початку конструктора підкласу за допомогою super(параметри).





Потрібно для всіх елементів масиву, в якому можуть бути екземпляри і Der1, і Der2, виконати операцію P1():

  • Потрібно для всіх елементів масиву, в якому можуть бути екземпляри і Der1, і Der2, виконати операцію P1():

  • Base[] M= new Base[4];

  • for (int i=0;i<4;i++) {M[i].P1();}



Об’єктна змінна суперкласу може посилатися на екземпляр підкласу, або посиланню на суперклас може бути надано значення посилання на підклас (розширююче перетворення).

  • Об’єктна змінна суперкласу може посилатися на екземпляр підкласу, або посиланню на суперклас може бути надано значення посилання на підклас (розширююче перетворення).

  • Методи класів за замовченням є віртуальними. Не є віртуальними методи, оголошені з модифікаторами static, private, final.



В подібних прикладах часто доводиться робити звужуюче перетворення.

  • В подібних прикладах часто доводиться робити звужуюче перетворення.

  • Наприклад, потрібно викликати P2:



перевірити належність до відповідного класу (RTTI);

  • перевірити належність до відповідного класу (RTTI);

  • здійснити знижуюче (звужуюче) перетворення.



if (M[i] instanceof Der1) {

  • if (M[i] instanceof Der1) {

  • Der1 b = (Der1) M[i];

  • b.P2();

  • }



Нехай оголошено три класи:

  • Нехай оголошено три класи:

  • class A

  • class B extends A

  • class C extends A

  • Що відбудеться при спробі виконати такий фрагмент коду:

  • A a = new B();

  • C c = (C) a;

  • а) помилка компіляції;

  • б) помилка часу виконання;

  • в) код буде виконано без помилок.





Нестатичні методи заміщуються (override).

  • Нестатичні методи заміщуються (override).

  • Поля затінюються (hide).



class Sup {

  • class Sup {

  • int i =10;

  • public static void staticMetod() {

  • System.out.println("Static metod of superclass");

  • }

  • public void nonStaticMetod() {

  • System.out.println("Non-static metod of superclass");

  • }

  • }



class Sub extends Sup{

  • class Sub extends Sup{

  • int i =20;

  • public static void staticMetod() {

  • System.out.println("Static metod of subclass");

  • }

  • @Override

  • public void nonStaticMetod() {

  • System.out.println("Non-static metod of subclass");

  • }

  • }



Sup spb = new Sub();

  • Sup spb = new Sub();

  • Sub sb = (Sub) spb;

  • System.out.println("Field of superclass - "+spb.i);

  • System.out.println("Field of subclass - "+sb.i);

  • spb.staticMetod();

  • sb.staticMetod();

  • spb.nonStaticMetod();

  • sb.nonStaticMetod();





Конструктор субкласу визначає значення змінних А і В, але спочатку викликається конструктор суперкласу:

  • Конструктор субкласу визначає значення змінних А і В, але спочатку викликається конструктор суперкласу:

  • subklass (int A, int B) {

  • super(A);

  • this.B=B;

  • this.A=10;

  • }



Далі - в основній програмі створюються два екземпляри субкласу з різними значеннями полів.

  • Далі - в основній програмі створюються два екземпляри субкласу з різними значеннями полів.

  • Поле А суперкласу затінено (в обох екземплярах 10), але до нього можна звернутися через super.A.

  • Для обох екземплярів - різні результати.

  • Вказівник super по суті є нестатичним і є характеристикою екземпляра, а не класу.



Абстрактний метод - метод без реалізації; він супроводжується модифікатором abstract.

  • Абстрактний метод - метод без реалізації; він супроводжується модифікатором abstract.

  • Передбачається, що такі методи повинні перевизначатися в підкласах.

  • Абстрактні методи не мають тіла:

  • public abstract int fun();



Методи, оголошені як static, private і final, не можуть бути абстрактними.

  • Методи, оголошені як static, private і final, не можуть бути абстрактними.

  • Якщо клас містить хоча б один абстрактний метод, він сам повинен бути оголошений як абстрактний.

  • Але клас може бути оголошений як абстрактний, навіть якщо він не містить жодного абстрактного методу.

  • Для абстрактного класу не можна створити жодного екземпляру. Але в абстрактному класі можуть бути конструктори.



Логічний розвиток ідеї абстрактних класів.

  • Логічний розвиток ідеї абстрактних класів.

  • Вказівниковий тип, схожий на клас.

  • Всі методи інтерфейсу є абстрактними і є public (навіть якщо модифікатор опущено).

  • Можна сказати, що інтерфейс - це набір вимог, які висуваються до класу, що його реалізує.



interface Interf {

  • interface Interf {

  • поля (public; лише static і final)

  • методи без тіла

  • }



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

  • Якщо деякий клас реалізує певний інтерфейс, він повинен визначити всі його методи. Це не стосується класів, які самі є абстрактними.

  • Опис:

  • class Kl implements Interf { …}

  • Клас може реалізовувати декілька інтерфейсів. Певні можливості, характерні для множинного спадкування.



Між інтерфейсами може бути відношення спадкування, причому таке спадкування може бути множинним.

  • Між інтерфейсами може бути відношення спадкування, причому таке спадкування може бути множинним.

  • Пусті інтерфейси (інтерфейси-маркери). Основна ідея - можливість перевірки тієї чи іншої властивості.

  • Екземпляр інтерфейсу створити неможливо. Чи можна створити покажчик інтерфейсного типу?

  • Поняття інтерфейсу тісно пов’язано з поняттям типу. Зокрема, дві об’єктні змінні можуть вказувати на один і той самий об’єкт, але мати різні типи.



В Java немає аналога delete.

  • В Java немає аналога delete.

  • “Збирання сміття”, тобто знищення об’єктів, які більше не використовуються (точніше - на які не залишилося досяжних посилань) здійснюється автоматично системою виконання.

  • “Збирання сміття” виконується в фоновому режимі з низьким пріоритетом. Ніяким чином не можна гарантувати, коли саме він буде викликаний і коли саме буде знищений той чи інший об’єкт.

  • Як можна зробити об’єкт придатним для збирання сміття?

  • Є можливість явно викликати збирач сміття: метод gc() класу System.



Метод void finalize(), як правило, оголошений як protected. Задає дії, які повинні бути виконані перед знищенням об’єкта. Викликається збирачем сміття перед його знищенням.

  • Метод void finalize(), як правило, оголошений як protected. Задає дії, які повинні бути виконані перед знищенням об’єкта. Викликається збирачем сміття перед його знищенням.

  • “Ланцюжків фіналізаторів” за замовченням немає. Тому дуже рекомендується організовувати їх явно: викликати як останню дію фіналізатору класу фіналізатор суперкласу.

  • “Воскресіння” об’єкта: можливо, хоч і не рекомендується. Але: фіналізатор викликається не більш ніж один раз.

  • Краще явно писати методи, які відповідають за дії при знищенні об’єктів.



Виключення - нестандартні ситуації, які можуть виникати під час виконання програми.

  • Виключення - нестандартні ситуації, які можуть виникати під час виконання програми.

  • Кожне виключення описується як об’єкт того чи іншого класу.

  • На вершині ієрархії - клас Throwable.

  • Два підкласи: Error (неусувні проблеми) та Exception (власне виключення; саме вони найчастіше перехоплюються і обробляються).

  • Для класу Exception є ряд підкласів - менш загальних виключень.



Якщо виключення не перехоплюється - перехід до зовнішніх блоків і пошук обробників там.

  • Якщо виключення не перехоплюється - перехід до зовнішніх блоків і пошук обробників там.

  • Якщо таких немає - ще далі, поки не дійде до стандартної обробки інтерпретатором.



Виключення поділяються на контрольовані та неконтрольовані.

  • Виключення поділяються на контрольовані та неконтрольовані.

  • Контроль з боку компілятора. Будь-яке контрольоване виключення потрібно або перехоплювати і обробляти, або оголосити в секції throws сигнатури методу.

  • Контрольовані - Exception (крім RuntimeException).



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

  • Сигналізує компілятору про те, що метод може викидати певні виключення. Їх обробка самим методом в цьому випадку не є обов’язковою. З іншого боку, це оголошення гарантує, що метод не може викидати інших неконтрольованих виключень (з урахуванням спадкування).

  • Особливості наслідування: метод підкласу не може генерувати більше контрольованих виняткових ситуацій, ніж такий самий метод суперкласу.



try {…}

  • try {…}

  • catch (виключення e) {…}

  • finally {…}

  • Блок finally виконується завжди - навіть якщо в блоці try є break або return. Виняток - System.exit.

  • Кожний блок try повинен супроводжуватися або catch, або finally.



e.printStackTrace()

  • e.printStackTrace()

  • System.out.println(e)



import java.io.*;

  • import java.io.*;

  • public class realpars {

  • public static void main (String[] args) {

  • System.out.println("Enter the real value");

  • BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

  • try {

  • String s = br.readLine();

  • double d = Double.parseDouble(s);

  • double dexp = Math.exp(d);

  • System.out.println("Result is "+dexp);

  • }



catch (IOException ioe) {System.out.println("Input error");}

  • catch (IOException ioe) {System.out.println("Input error");}

  • catch (NumberFormatException ioe) {

  • System.out.println ("Please enter the proper value");

  • }

  • catch (ArithmeticException are) {

  • System.out.println("Error in calculations ");

  • }

  • catch (Exception e) {

  • System.out.println ("Something strange and unbelievable");

  • }



finally {try {if (br!=null) br.close();

  • finally {try {if (br!=null) br.close();

  • else System.out.println("Inproper closing of the stream");}

  • catch (Exception e)

  • {System.out.println("The God is against you");}

  • }

  • }

  • }



Блоків catch може бути декілька - для обробки різних типів виключень.

  • Блоків catch може бути декілька - для обробки різних типів виключень.

  • Порядок має значення.



public class Indecisive {

  • public class Indecisive {

  • public Indecisive() { }

  • public static void main(String args[]){

  • System.out.println(decision());

  • }

  • static boolean decision(){

  • try {

  • return true;

  • } finally {

  • return false;

  • }

  • }

  • }



public class HelloGoodbye {

  • public class HelloGoodbye {

  • public static void main(String args[]){

  • try {

  • System.out.println("Hello!");

  • System.exit(0);

  • } finally {

  • System.out.println("Goodbye!");

  • }

  • }

  • }



Генерація виключення.

  • Генерація виключення.

  • Синтаксис: throw new викл(…).

  • Якщо метод генерує контрольоване виключення, воно повинно бути описане в секції throws.



Можна створювати і обробляти власні виключення як підклас деякого іншого виключення.

  • Можна створювати і обробляти власні виключення як підклас деякого іншого виключення.



class LargeArgumentException extends Exception {

  • class LargeArgumentException extends Exception {

  • }



int Fun (int n) throws LargeArgumentException {

  • int Fun (int n) throws LargeArgumentException {

  • if (n>10) throw new LargeArgumentException();

  • else return (N*2);

  • }



Для перевірки даних під час виконання.

  • Для перевірки даних під час виконання.

  • Зокрема, для контролю контракту класу; для перевірки припущень, які робилися при написанні коду.

  • З’явилися в 1.4.



assert вираз;

  • assert вираз;

  • Вираз за припущенням програміста завжди повинен бути істинним.

  • Якщо він дійсно істинний - оператор assert нічого не робить. Якщо хибний - виключення AssertionError.

  • За дуже рідкими винятками, це виключення не варто перехоплювати і обробляти.



public class assertions {

  • public class assertions {

  • public static void main (String[] args) {

  • int a=5;

  • int b=4;

  • int s=a*b;

  • assert (s==20);

  • System.out.println(s);

  • }

  • }



За замовченням відімкнені, тобто ігноруються. Щоб ввімкнути - запустити інтерпретатор з ключем -ea. Можна і вибірково: для окремих класів.

  • За замовченням відімкнені, тобто ігноруються. Щоб ввімкнути - запустити інтерпретатор з ключем -ea. Можна і вибірково: для окремих класів.



Вкладені класи - класи, які визначені всередині інших класів.

  • Вкладені класи - класи, які визначені всередині інших класів.

  • Ключова риса – права доступу. Вкладений клас має доступ до всіх членів зовнішнього класу, включаючи приватні (з урахуванням статичності/нестатичності).

  • Застосування: деякі питання, пов’язані з множинним спадкуванням; mix-ins; типове використання – обробники подій.



клас (або інтерфейс) як статичний член;

  • клас (або інтерфейс) як статичний член;

  • клас як нестатичний член;

  • локальні класи;

  • безіменні класи.

  • Останні три категорії відомі як внутрішні класи.



Створення екземпляру (для нестатичних класів-членів):

  • Створення екземпляру (для нестатичних класів-членів):

  • OuterClass.Inn inn = outerekz.new Inn(…);

  • В деяких випадках, наприклад, для звернення з внутрішнього класу до затінених полів зовнішнього класу або при конфлікті імен у випадку спадкування слід використовувати спеціальну форму:

  • OuterClass.this.поле



При компіляції - файл типу outer$inner.class.

  • При компіляції - файл типу outer$inner.class.

  • Віртуальна машина не відрізняє внутрішні класи від інших. Тому компілятор робить автоматичні зміни в результуючому коді:

  • внутрішній клас отримує додаткове поле з посиланням на зовнішній клас (для статичних - компілятор додає до виразу доступу ім’я зовнішнього класу);

  • додаються додаткові неприватні методи, які забезпечують доступ до закритих полів.



Анонімний клас - локальний клас без імені.

  • Анонімний клас - локальний клас без імені.

  • Типовий синтаксис для опису анонімного класу і створення екземплярів:

  • new superclass/interface(args) {

  • перевизначення методів

  • }



public class anonim {

  • public class anonim {

  • static String S1="The field ";

  • public static void main(String[] args) {

  • final String S2="the local variable";

  • System.out.println(

  • new Object() {

  • public String toString(){

  • return S1+" and "+S2+", reached from the inner anonymous class";

  • }}

  • );

  • }

  • }



String arr[] = {"extremely long","short","rather long","this is just almost a BLOB"};

  • String arr[] = {"extremely long","short","rather long","this is just almost a BLOB"};

  • Arrays.sort

  • (arr, new Comparator () {

  • public int compare (String o1, String o2) {

  • return (o1.length()-o2.length());

  • }

  • }

  • );



enum Car {

  • enum Car {

  • Slavuta, Ferrari, Mersedes, Honda

  • }



Car [] cr = Car.values();

  • Car [] cr = Car.values();

  • String claim = "";

  • for (Car c:cr) {

  • switch (c) {

  • case Slavuta: claim="Крута тачка"; break;

  • case Ferrari: claim="Теж нічого"; break;

  • case Mersedes: claim = "Навіщо Вам та колимага?";break;

  • case Honda: claim = "А в Китаї теж роблять машини";

  • }

  • System.out.println (c.ordinal()+"."+c+" - "+claim);

  • }

  • }



enum Car {

  • enum Car {

  • Ferrari (20000), Slavuta(5000), Mersedes(100000), Honda(15000);

  • private int price;

  • Car (int c) {

  • price=c;

  • }

  • public int getPrice() {

  • return price;

  • }

  • }



Car [] cr = Car.values();

  • Car [] cr = Car.values();

  • for (Car c:cr) {

  • System.out.println (c+" - "+c.ordinal()+" - "+c.getPrice() );

  • }



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

  • Засоби, які дозволяють під час виконання програми отримувати інформацію про класи, їх поля і методи, і більш загально – для динамічної роботи з кодом.

  • Наприклад – створити екземпляр класу, назва якого вводиться в рядку.

  • Базовий інструмент – клас Class.

  • Більш розвинені можливості – пакет java.lang.reflect.



метод getClass() класу Object;

  • метод getClass() класу Object;

  • виклик статичного методу Class.forName(ім’я класу);

  • T.class, де Т-деякий тип.



Class forName(String name) – завантаження класу;

  • Class forName(String name) – завантаження класу;

  • Object newInstance() – створення екземпляру;

  • String getName() – отримання імені класу.



Отримання полів, методів і т.д.

  • Отримання полів, методів і т.д.

  • Динамічний виклик методів, якщо їх назви задані як рядок.

  • Указники на функції (!?).



import java.io.*;

  • import java.io.*;

  • import java.lang.reflect.*;

  • public class reflection {

  • public static void main(String[] args) throws Exception {

  • BufferedReader br=new BufferedReader(new InputStreamReader

  • (System.in));

  • System.out.println("Enter class name");

  • String clName=br.readLine();

  • Class cl = Class.forName(clName);

  • Method[] M = cl.getMethods();

  • for (Method m:M) {System.out.println(m);}

  • }

  • }



class Ext {

  • class Ext {

  • private int Pole;

  • public Ext(int Pole) {

  • this.Pole = Pole;

  • }

  • public void metod() {

  • System.out.println("The field of this object is "+Pole);

  • }

  • }



Method m = Ext.class.getMethod("metod");

  • Method m = Ext.class.getMethod("metod");

  • Ext ext = new Ext(50);

  • m.invoke(ext);



Method square = Ext.class.getMethod("square", double.class);

  • Method square = Ext.class.getMethod("square", double.class);

  • Method sqrt = Math.class.getMethod("sqrt", double.class);

  • for (double x=from; x<=to; x+=dx) {

  • double y = (Double) f.invoke(null, x);

  • System.out.printf("%10.4f | %10.4f%n",x,y);

  • }



Схожі:

Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова iconC# – повністю об’єктно-орієнтована мова. C# – повністю об’єктно-орієнтована мова

Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова iconМова програмування java сучасні комп’ютерні технології

Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова iconHttp://java sun com http://java sun com
...
Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова iconУніфікована мова моделювання uml. Загальна характеристика 2007 Зміст
На сьогодні вона підтримується багатьма об'єктно-орієнтованими інструментальними системами
Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова iconУніфікована мова моделювання uml. Загальна характеристика 2007 Зміст
На сьогодні вона підтримується багатьма об'єктно-орієнтованими інструментальними системами
Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова iconУніфікована мова моделювання uml. Загальна характеристика 2003-2010 Зміст
На сьогодні вона підтримується багатьма об'єктно-орієнтованими інструментальними системами
Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова iconУніфікована мова моделювання uml. Загальна характеристика 2003-2010 Зміст
На сьогодні вона підтримується багатьма об'єктно-орієнтованими інструментальними системами
Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова iconJava jme – Java Micro Edition
Специфікації деталізовані настільки для того, щоб забечити переносимість з одної реалізації платформи на іншу
Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова icon21 лютого – день рідної мови
«Мова народу найбільший національний скарб\ О. Гончар «Мова наша, мова мова кольорова в ній гроза травнева, й тиша вечорова»
Java – повністю об’єктно-орієнтована мова. Java – повністю об’єктно-орієнтована мова iconУкраїнська мова: історія І сучасність план Українська мова серед інших мов світу
...

Додайте кнопку на своєму сайті:
dok.znaimo.com.ua


База даних захищена авторським правом ©dok.znaimo.com.ua 2013
звернутися до адміністрації
dok.znaimo.com.ua
Головна сторінка