на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Створення навчальної програми по вивченню іноземної мови
p align="left">Як і С++ мова Java дозволяє використовувати змінні і методи, що належать класу цілком. Для визначення їх використовується ключове слово static. Природно, що методи самого класу не можуть оперувати даними і методами об'єкту класу, оскільки вони не відносяться ні до якогось певного об'єкту.

Наприклад, версія реалізації класу Rectangle може бути задана таким чином: class Rectangle extends Object { static final int version = 2 ; static final int revision = 0 ; } Ключове слово final означає, що значення поля остаточне і зміні не підлягає (це константа).

Абстрактні методи -- це методи, для яких в даному класі не визначена їх реалізація. Ми указуємо лише на необхідність наявності методів з даним протоколом. Конкретна реалізація повинна бути здійснена класами-спадкоємцями. В той же час інша, “неабстрактна” частина класу може містити конкретну інформацію, яка може бути використана похідними класами. Наприклад: abstract class Graphical extends Object { protected Point lowerLeft; protected Point upperRight; … public void setPosition(Point ll, Point ur) { lowerLeft = ll; upperRight = ur; } abstract void drawMyself(); } class Rectangle extends Graphical { void drawMyself() { …. } } Тут ми описали клас Graphical.

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

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

Таким чином ми висвітили наступні сторони Java як об'єктно-орієнтованої мови програмування:

- класи визначають шаблон, по якому створюються конкретні об'єкти;

- поля даних об'єкту визначають стан об'єкту;

- об'єкти обмінюються повідомленнями між собою; отримання повідомлення приводить до виклику одного з методів;

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

- не залежна від архітектури, переносима і інтелектуальна;

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

Компілятор Java проводить не “машинні коди” подібно до того, як це робить, наприклад, компілятор мови С. Замість цього генеруються так звані байт-коди: високорівневі, машинонезалежні коди для абстрактної машини, яка повинна бути реалізована у вигляді інтерпретатора Java і run-time системи.

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

- набір її кодів легко не тільки інтерпретувати, але і ефективно скомпілювати “на льоту” безпосередньо в машинні коди для будь-якої сучасної апаратної платформи;

- коди містять додаткову інформацію, яка дозволяє перевірити їх на безпеку виконання.

Окрім незалежності кодів від конкретної архітектури, Java жорстко специфікує формат базових типів даних. Без цього одна і та ж програма, скомпільована для різних апаратних платформ, поводилася б по-різному. Наприклад, стандарт С/С++ не передбачає конкретного уявлення для цілого типу int. Передбачається, що цьому типу відповідає основний формат машинного слова для даної архітектури. В результаті програма, написана для 32-розрядного процесора, найчастіше переноситься на 16-розрядну архітектуру з дуже великими зусиллями.

Таким чином, рішення зафіксувати формати базових типів даних в Java цілком природне. Кожна Java-машина зобов'язана реалізувати їх таким чином: byte 8-bit two's complement short 16-bit two's complement int 32-bit two's complement long 64-bit two's complement float 32-bit IEEE 754 floating point double 64-bit IEEE 754 floating point char 16-bit Unicode character. Вибір саме такого набору базових типів і їх формату обумовлений тим, що практично будь-який сучасний центральний процесор підтримує ці формати.

Більш того, перенесення самого середовища може бути здійснене досить просто. Компілятор Java сам написаний на цій мові. Віртуальна машина написана на ANSI C відповідно до стандарту POSIX. Специфікація мови не містить посилань типу “залежно від конкретної реалізації”.

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

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

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

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

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

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

2.3 Опис розробленої програми для вивчення

Іноземної мови

Структура шляхів

Структура директорій програми:

.

|-- lessons

| |-- first

| |-- second

| `-- test

|-- results.txt

|-- run.bat

|-- run.sh

`-- small.jar

Тут lessons -- директорія, в якій знаходяться директорії з уроками. results.txt файл з результатами тестів, run.bat -- пакетний файл для запуску програми в операційній системі MSWindows; run.sh -- пакетний файл для запуску програми в операційній системі GNU/ Linux; small.jar -- це Java архів з програмою, являє собою звичайний ZIP-архів, у якому міститься частина програми на мові Java.

Структура директорії тестом:

.

|-- images

|-- sounds

`-- words.csv

Тут каталог image містить фонові малюнки для слів тесту в форматі jpg з ім'ям співпадаючим зі словом в тесті.

Каталог sounds містить фонограми вимови для слів тесту в форматі wav з ім'ям співпадаючим зі словом в тесті.

Файл words.csv містить данні через ";" для тесту: такі, як тестове слово, слово з символом "_" замість пропущених букв, переклад та час в секундах, відведених на дане слово (якщо час 0 або відсутній, то таймер не вмикається).

Приклад: test;t_st;Тест;60

Структура каталогу с тестом first:

first

|-- images

| |-- apple.jpg

| |-- bear.jpg

| |-- bird.jpg

| |-- cat.jpg

| |-- clock.jpg

| |-- cloud.jpg

| |-- dog.jpg

| |-- doll.jpg

| |-- door.jpg

| `-- tree.jpg

|-- sounds

| |-- apple.wav

| |-- bear.wav

| |-- bird.wav

| |-- cat.wav

| |-- clock.wav

| |-- cloud.wav

| |-- dog.wav

| |-- doll.wav

| |-- door.wav

| `-- tree.wav

`-- words.csv

Вміст файлу words.csv директорії first:

apple;ap__e;Яблуко;60

cat;c_t;Кішка

dog;d_g;Собака;50

doll;d_ll;Лялька;0

tree;tre_;Дерево;40

door;d__r;Двері;30

clock;clo__;Годиник;30

bird;b_rd;Птах;20

cloud;cl__d;Хмара;20

bear;b__r;Ведмідь;10

Алгоритм програми

Запуск програми на платформі Windows здійснюється запуском пакетного файлу "run.bat". Зміст файлу run.bat:

@echo off

start javaw.exe -jar small.jar

Запуск програми на платформі GNU/Linux здійснюється запуском пакетного файлу "run.sh". Зміст файлу run.sh:

#!/bin/sh

java -jar small.jar $@

Також в обох платформах можна запустить програму, натиснувши на small.jar із провідника файлів. Але це подіє тільки у випадку якщо jar файли асоційовані в системі з віртуальною машиною Java.

Після передачі jar файлу віртуальній машині Java на виконання, в класі Main викликається метод main(), із якого викликається метод doLogin() і створюється об'єкт login класу Login, відповідальний за створення вікна входу в програму, запит імені користувача, пошук існуючих тестів в директорії програми методом Scan() класу Login та вибір тесту користувачем (рис. 2).

Рисунок 2 - Вікно входу в програму

Метод Scan() виконує пошук в директорії lessons і шукає там піддиректорії, які містять в собі файл words.csv:

public void Scan(String d){

File dir = new File(d);

String[] files = dir.list();

for(int i=0;i<files.length;i++){

if(new File(d+"/"+files[i].toString()+"/"+Main.ftxt).exists()) {

addL(files[i].toString());

}

}

}

Тут Main.ftxt - константа, описана в класи Main:

final static String ftxt = "words.csv";

Після вводу ім'я користувача в відповідну форму в вікні, вибір тесту (рис. 3) та натиснені кнопки входу, усі данні передаються в клас Main методом setEnv(), а вікно об'єкта login знищується.

Рисунок 3 -- Вибір із існуючих уроків

Метод setEnv() класу Main викликає метод doTest(), який створює об'єкт test класу Test:

public static void setEnv(String n,String l){

name = n;

less = l;

login = null;

doTest();

}

Тут поле name - ім'я користувача, less - шлях до директорії вибраного тесту.

Клас Test відповідає за створення основного вікна програми, всіх елементів управління та взаємодії з користувачем, вивід інформації на екран: текст та картинки. Також клас Test відповідає за зчитування клавіш, натиснутих користувачем.

static void doTest(){

test = new Test();

SwingUtilities.invokeLater(new Runnable() {

public void run() {

test.getJFrame().setVisible(true);

}

});

words = new Words(workdir,lessdir+less+"/",name,ftxt);

}

Також в методи doTest() створюються об'єкт words класу Words, який містить методи обробки тестів. Також клас Words містить методи роботи з файлами, наприклад метод парсингу файла words.csv:

void readFiles(){

File f= new File(workdir+ldir+ftxt);

String[] sbuff;

n=0;

try {

BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(f), Main.iocharset));

try {

String line = null;

while (( line = input.readLine()) != null){

sbuff = line.split("[ \";,\t]+");

// Слово з пропущеними літерами

try {

word_test[n] = sbuff[1].toUpperCase();

} catch(ArrayIndexOutOfBoundsException e){

word_test[n]=sbuff[0].toUpperCase();

}

// Переклад слова

try {

word_rus[n] = sbuff[2];

} catch(ArrayIndexOutOfBoundsException e){

word_rus[n]="";

}

// Картинка

try{

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.