Створення навчальної програми по вивченню іноземної мови

Загрузка...

главная страница Рефераты Курсовые работы текст файлы добавьте реферат (спасибо :)Продать работу

поиск рефератов

Диплом на тему Створення навчальної програми по вивченню іноземної мови

скачать
похожие рефераты
подобные качественные рефераты
 1 2 3 4 5 6 7 8 9 ... 27    

- цілі числа: 8-бит byte, 16-бит short, 32-бит int, 64-бит long; всі числа із знаком, ключ unsigned з мови видалені;

- числа з плаваючою крапкою; 32-біт float, 64-біт double; подання повинне відповідати стандарту IEEE 754.

Character - відрізняються від С++ як синтаксисом, так і уявленням. Тип character є 16-розрядне число без знаку (діапазон 0-65,535). Кодування відповідає стандарту Unicode. Внаслідок того, що це кодування в ідеалі повинне охоплювати всі мови, що існують в світі, це уявлення повинне полегшити локалізацію програм.

Boolean - тип даних не виділений в С++, проте неявно присутній практично у всіх програмах. У Java тип називається boolean, може приймати значення true і false і не може (на відміну від С++) бути перетворений в інший тип.

Доданий новий оператор >>> логічного зсуву управо (так як немає беззнакових цілих чисел). Вбудована операція злиття рядків (оператор +).

На відмінність від С++ масиви в Java є повноцінними об'єктами з певним runtime уявленням. Декларація:

- Point myPoints[]; резервує посилання на масив, а не місце під реальний об'єкт; сам масив може бути потім створений виконанням;

- myPoints = new Point[10]; а його елементи заповнені операцією типу: myPoints[2]= new Point(); розмір масиву може бути отриманий під час виконання програми: howMany = myPoints.length;

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

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

Рядки Strings в Java є повноцінними об'єктами. Вони діляться на текстові константи (Strings) і рядки, що модифікуються (StringBuffer). Компілятор дозволяє явно визначати текстові літерали в програмі подібно до того, як це робиться в С++.

String hello = “Hello world!”; Посилання hello ініціюється об'єктом класу String на основі представлення “Hello world!” у кодуванні Unicode.

Оператор “+” може бути застосований до рядків, наприклад: System.out.println(”There are” + num + “characters in the file.”);

В Java відсутній вираз goto. Аналіз С/С++ текстів показав, що переважне число випадків використання цього оператора пов'язане з необхідністю виходу з вкладеного циклу. Для відлагодження таких ситуацій в Java перед початком блоку може ставитися мітка, а інструкції break і continue також можуть супроводжуватися міткою, на яку повинен бути здійснений перехід. Наприклад: test: for(int i = 0; i < 10; i++) for(int j = 0; j < 10; j++) if( i > 3) break test;

Необхідність явно управляти пам'яттю в С/С++ програмах завжди була проблемою для програмістів. Мало того, що самі програми рясніли викликами функції free або операторами delete, безпосередньо до логіки програми вони відношення не мають.

Помилки, не пов'язані зі звільненням пам'яті або навпаки, з видаленням вже одного разу видалених об'єктів, відносяться до категорії помилок найбільш важких для виявлення і виправлення.

Java повністю знімає цю турботу з програміста. Автоматичний збиральник сміття зобов'язаний бути вбудований в run-time системи. Пам'ять об'єктів, на які більше немає посилань, врешті-решт повертається в систему.

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

Одна з переваг того, що Java-програми багатопотокові, полягає в тому, що збірка сміття може проводитися у фоновому потоці. Цей потік має менший пріоритет виконання, чим інші, тому система завжди готова відповісти на дії користувача, відсутні “періоди бездіяльності”, в які проводиться тільки збірка сміття.

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

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

Конструкція typedef була успадкована С++ з С. Із Java вона викинута зовсім.

Необхідність в макропроцесорі також багато в чому відпала при написанні програм на С++. Майже все, для чого використовувалися макророзширення, можна було зробити елегантнішим і надійнішим чином, використовуючи конструкції самої мови.

Система неявно заохочувала створення кожним програмістом своєї власної підмножини мови, невідомої решті світу. У міру розростання кодів збільшується той смисловий контекст, в якому компілятор інтерпретує кожен рядок програми. Вже в проектах середнього розміру істотно зростає навантаження на компілятор, не говорячи вже про навантаження на пам'ять програміста.

Єдина важлива функція препроцесора, що залишилася — дозволити включення в програму файлів-заголовків з описами класів. Ця операція може бути виконана просто і ефективно, якщо дозволити компілятору читати підготовлені бінарні файли з описом класів. Останній напрямок був вибраний при створенні мови Java.

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

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

В цьому сенсі Java чисто об'єктно-орієнтована система. Функції і процедури, не прив'язані до контексту якого-небудь об'єкту, більше не присутні в системі. За ситуації, коли функція логічно не прив'язана до певного екземпляра класу, вона може бути створена як метод самого класу (тобто мати тип static).

Послідовна реалізація концепції множинного наслідування в С++ привела до істотних труднощів як в створенні компіляторів, так і у використанні його (множинного наслідування) в програмах. Як альтернатива Java використовує поняття інтерфейсу, що визначає набір методів, які повинні бути визначені в класі, що реалізовує цей інтерфейс.

Інтерфейс може також містити визначення деяких констант.

Те, чого інтерфейс містити не може, — це реалізації методів або змінні поля даних. Класи, які оголошені, що реалізують той або інший інтерфейс, зобов'язані реалізувати всі методи, оголошені в інтерфейсі.

Досвід використання перевантажених операторів в С++ показує, що вони мають сенс в досить обмеженому наборі ситуацій. З іншого боку, зловживання цією властивістю може зробити програму абсолютно незрозумілою. Єдине “вбудоване” в мову Java виключення — можливість використання оператора “+” для склеювання рядків.

В мові Java заборонено автоматичне перетворення типів, широко використовуване (і рекомендоване) в С++. Щоб перетворити елемент одного типу в іншій, необхідно вказати це явно, наприклад: int myInt; double myFloat = 3.14159; myInt = myFloat; // допустимо в С++, неприпустимо в Java myInt = (int)myFloat; // допустимо в Java. Виняток становить перетворення між вбудованими чисельними типами без втрати інформації.

Більшість досліджень показали, що застосування покажчиків в С/С++ є одним з основних джерел помилок. Внаслідок того, що в мові більше не стало структур, а масиви і рядки перетворилися на повноцінні об'єкти, потреба в покажчиках відпала.

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

Отже, ми показали дві з основних властивостей мови програмування Java:

- знайомий — Java зберігає стиль програмування C і С++;

- простий — кількість конструкцій мови в Java істотно скорочена в порівнянні із С і С++;

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

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

Ідейними спадкоємцями Java є такі мови, як C++, Eiffel, Smalltalk і Objective C. За винятком примітивних типів даних, практично все в мові є об'єктом.

Основні вимоги до об'єктно-орієнтованої системи:

- інкапсуляція — захована реалізація за абстрактним інтерфейсом;

- поліморфізм — одне і те ж повідомлення, послане різним об'єктам, приводить до виконання різних операцій;

- спадкоємство — нові класи можуть успадковувати дані і функціональність вже існуючих класів;

- динамічне скріплення — нові класи можуть з'являтися в системі звідки завгодно, у тому числі і з мережі. Необхідно мати можливість динамічно включати їх в систему.

Клас є мовна конструкція, що визначає поля даних об'єктів даного класу (instance variables) і їх поведінку (methods). Практично клас в Java сам по собі не є об'єктом. Це лише шаблон, який визначає, з яких частин складатиметься об'єкт, створений за допомогою цього класу, і як він поводитиметься.

Простий приклад опису класу:

class Point extends Object { public double x; public double у; }

Створити об'єкт описаного вище класу можна декларацією: Point myPoint; // оголошення змінної типа Point myPoint = new Point(); myPoint.x = 10.0; myPoint.y = 25.7;.

При оголошенні класу можливо вказати методи спеціального вигляду, названі конструкторами і призначені для ініціалізації створеного об'єкту. Ім'я цих методів повинне співпадати з ім'ям класу, вони можуть мати певну кількість аргументів, наприклад: class Point extends Object { Point() { x = 0.0; у = 0.0; } Point(double x, double у) { this.x = x; this.y = у; } public double x; public double у; }, а використані вони можуть бути таким чином: Point а; Point b; а = new Point(); b = new Point(1.0, 2.0); - ім'я this у визначенні конструктора з аргументами використовується для позначення самого об'єкту, в методі якого ми знаходимося, в тих випадках, коли посилання на цей об'єкт не є явним.

    продолжение
 1 2 3 4 5 6 7 8 9 ... 27    

Удобная ссылка:

Скачать дипломную работу бесплатно
подобрать список литературы


вверх страницы


© coolreferat.com | написать письмо | правообладателям | читателям
При копировании материалов укажите ссылку.