Единое окно доступа к образовательным ресурсам

Среда разработки Java-приложений Eclipse (ПО для объектно-ориентированного программирования и разработки приложений на языке Java): Учебное пособие

Голосов: 25

Учебное пособие представляет собой руководство по использованию среды разработки Eclipse для создания приложений на языке Java. Основное внимание уделено практическим приемам работы с Eclipse. Пособие предназначено для преподавателей, студентов, школьников старших классов, а также для специалистов, желающих освоить самостоятельно программирование на языке Java. Пособия подготовлены в рамках проекта "Пакет свободного программного обеспечения для образовательных учреждений России" и размещены на сайте информационной поддержки проекта <a href="http://linux.armd.ru" target="_blank">linux.armd.ru</a>.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
                     С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


04           short q = 0;
05           while(x>0){
06             q=(short)(x%2);
07               x/=2;
08               res=q+res;
09           }
10           return res;
11       }
12       public static String fromdectohex(float x){
13           String res="";
14           short q = 0;
15           int c = 2;
16           while(c>0){
17             q=(short)(16*(x/16-Math.floor(x/16)));
18             c=(int) Math.floor(x/16);
19               x=c;
20               if(q<10){
21                   res=q+res;
22               }else{
23               switch(q){
24               case 10:
25                   res="A"+res;
26                 break;
27               case 11:
28                   res="B"+res;
29                 break;
30               case 12:
31                   res="C"+res;
32                 break;
33               case 13:
34                   res="D"+res;
35                 break;
36               case 14:
37                   res="E"+res;
38                 break;
39               case 15:
40                   res="F"+res;
41                   break;
42               }
43               }
44           }
45           return res;
46       }
47       public static void main(String[] args) {
48         System.out.println(fromdectobin(90367));
49         System.out.println(fromdectohex(90367));
50       }
51   }



                                                 51


            С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


     В данной программе приведены два метода, один переводит деся-
тичное число в двоичную систему счисления, второй — в шестнадцате-
ричную.
     Для перевода десятичного числа в двоичное представление ис-
пользуется стандартный метод — деление исходного числа на 2 с сохра-
нением остатка, в нашем примере остаток прибавляется к строке res с
левой стороны (08). В данном методе используется цикл с предусловием
while(), который каждый раз получает остаток от деления на 2, затем
делит исходное число на 2 и заносит полученный в первом действии
остаток слева в строку. В конце, после цикла, метод возвращает полу-
ченную строку.
     Способ перевода из десятичного в шестнадцатеричное представ-
ление использует аналогичный прием, производя последовательно де-
ление на 16, за одним исключением — остаток в нашей программе вы-
числяется с помощью функции floor(), которая возвращает целую
часть дробного числа. В результате получим целочисленный остаток от
деления. Процесс записи остатков в строку более сложный, чем в слу-
чае двоичной системы счисления, так как в шестнадцатеричной для
представления числа недостаточно базового набора цифр от 0 до 9 и
необходимо использовать буквы A-F. Для того чтобы в строку результа-
та добавлять буквы, в программе используется оператор множественно-
го выбора switch(), в котором производится проверка остатка. В зави-
симости от величины остатка, в строку результата добавляется необхо-
димая буква (строки 23-42).
     Методы fromdectobin, fromdectohex возвращают значения типа
String, которые можно непосредственно использовать в качестве аргу-
мента метода print() для вывода на консоль (строки 48, 49). В качестве
аргументов этих методов берутся числа, которые требуется перевести в
заданную систему счисления.
     Задания к работе
        1. Для произвольной цифры от 0 до 9 вывести на консоль ее
     значение прописью. Например, для цифры 9 на консоли должна
     быть напечатана строка «Девять».




                                            52


           С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


     Лабораторная работа №6
     Тема работы. Массивы и строки.
     Цель работы. Научиться использовать массивы и строки в Java.
     Содержание работы. Работа с массивами: поиск минимального
элемента и сортировка массива, а также простейшие приемы работы со
строками.
     П р о г р а м м а 1 . Работа с массивами
 01  public class Arrays {
 02    public static short minX(){
 03       short x=0;
 04       short[] array = new short[10];
 05       System.out.print("Исходный массив: ");
 06       for (int i=0;i<10;i++){
 07       array[i]=(short)Math.round(50*Math.random());
 08          System.out.print(array[i]+", ");
 09       }
 10       x=array[0];
 11       for(int i=1;i<10;i++){
 12          if(x>array[i]){
 13             x=array[i];
 14          }
 15       }
 16       return x;
 17    }
 18    public static void sort(){
 19       short temp;
 20       short[] array = new short[10];
 21       System.out.print("\nИсходный массив: ");
 22       for (int i=0;i<10;i++){
 23       array[i]=(short)Math.round(50*Math.random());
 24          System.out.print(array[i]+", ");
 25       }
 26       System.out.print("\nМассив отсортированный: ");
 27       for(int i=0;i<9;i++){
 28          for(int j=9;j>i;j--){
 29             if(array[j-1]>array[j]){
 30                temp=array[j];
 31                array[j]=array[j-1];
 32                array[j-1]=temp;
 33             }
 34          }
 35          System.out.print(array[i]+", ");
 36       }
 37 }
 38 public static void main(String[] args) {
 39 System.out.print("\nМинимальный элемент: "+minX());
 40 sort();
 41 }

                                           53


           С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


42    }
      В данной программе используются два метода — minX() и sort().
В каждом из представленных методов описывается по одному массиву,
выделяя память на десять элементов для каждого массива (04, 20). За-
тем происходит заполнение массивов случайными числами с помощью
метода Math.random() (06-09, 22-25). Явным преобразованием (short)
приводим полученные значения типа double к значениям типа short
(7,23).
      После того, как массивы готовы, можно производить над ними
различные действия. Метод minX() ищет минимальный элемент в полу-
ченном массиве (11-15).
      Второй метод производит сортировку полученного массива (27-34)
методом пузырька. Затем выводит значения его элементов (35).
      В методе main() вызываем minX() и sort(). Поскольку метод
minX() возвращает значение строкового типа, его можно использовать в
качестве аргумента конструкции System.out.print().
      П р о г р а м м а 2 . Работа со строками
 01 public class Strings {
 02     public static String compare(String s1, String s2){
 03        String s3="";
 04        if (s1.equals(s2)){
 05           s3="Строки \""+s1+"\" и \""+s2+"\" равны";
 06        } else {
 07           s3="Строки \""+s1+"\" и \""+s2+"\" не равны";
 08        }
 09        return s3;
 10     }
 11     public static String add(String s1, String s2){
         System.out.print("\nРезультат сложения строк \""+s1+"\" и
12   "+"\""+s2+"\": ");
13       s1+=" "+s2;
14       return s1;
15     }
16     public static void main(String[] args) {
17       System.out.println(compare("АБВГ","АБВ"));
18       System.out.print(compare("АБВ","АБВ"));
19       System.out.print(add("Hello","World"));
20     }
21   }
     В приложении имеется два метода, которые сравнивают и склеи-
вают две строки. Первый метод compare() производит сравнение двух
строк и выводит результат на консоль. Сравнение производится с помо-
щью функции equals() в строке (04). Если строки совпадают, данная
функция возвращает значение true. Если строки равны (имеют одина-


                                           54


           С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


ковый набор символов), выводится соответствующее сообщение (05),
иначе сообщение (07). В конструкции присвоения строке s3 (05, 07)
были использованы символы Escape-последовательности, приведенные
в лабораторной работе №2.
     Во втором методе происходит простое склеивание строк с помо-
щью операции «+»(13).

    Задания к работе
       1. Дан массив из целых чисел A(n), где n=1,25. Необходимо по-
    менять местами его максимальный и минимальный элемент.
       2. Дан массив из целых чисел B(n), где n=1,25. Необходимо
    упорядочить массив по возрастанию.
       3. Дан массив из целых чисел С(n), где n=1,20. Необходимо
    найти среднее значение и вывести его на консоль.
       4. Дан массив из целых чисел D(n), где n=1,30. Посчитайте
    сумму четных и нечетных элементов массива.
       5. Напишите программу, выводящую на консоль таблицу 3х5
    случайных элементов (a(i,j)< 10).
       6. Измените программу 1 так, чтобы она выводила на консоль
    еще и максимальный элемент (с помощью описания нового мето-
    да, например maxX()).
       7. Даны 5 строк s1, s2, s3, s4 и s5, на основе условия: если
    строка s4 равна строке s5, нужно сложить строки s1 и s2, иначе
    нужно сложить строки s1 и s3.

     Лабораторная работа №7
     Тема работы. Введение в объектно-ориентированное програм-
мирование.
     Цель работы. Изучение основ объектно-ориентированного про-
граммирования на языке Java.
     Содержание работы. В работе рассматриваются приложения,
демонстрирующие основные принципы объектно-ориентированного
программирования.
     П р о г р а м м а 1 . Инкапсуляция полей и наследование.
 01  public class Encapsulate {
 02    public int field1 = 100;
 03    protected int field2 = 150;
 04    int field3 = 200;
 05    private int field4 = 250;
 06    public int getField4(){
 07       return this.field4;

                                           55


             С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


08       }
09       public static void main(String[] args) {
10         new Class2().method1();
11       }
12   }
13   class Class2 extends Encapsulate {
14     public void method1(){
         System.out.println("Значение открытого public поля
15   - field1: "+this.field1);
         System.out.println("Значение защищенного protected
16   поля - field2: "+this.field2);
         System.out.println("Значение поля без модификатора
17   - field3: "+this.field3);
         System.out.println("Значение инкапсулированного закрытого
18   private поля - field4: "+getField4());
19     }
20   }
      В приведенном примере демонстрируются два основных принципа
объектно-ориентированного программирования: инкапсуляция и насле-
дование. Создается класс Encapsulate (01-12), в котором объявляются и
инициализируются поля filed1, filed2, filed3 и filed4. Каждое поле
имеет различный уровень доступа, поскольку при описании использова-
ны модификаторы доступа к элементам класса: public, protected,
private. Затем описывается новый класс Class2, который наследуется
от класса Encapsulate с помощью зарезервированного слова extends. В
данном классе описывается новый метод, расширяющий суперкласс, в
котором выводятся значения полей, описанных в суперклассе. Вы види-
те, что в классе Class2 нет описания этих полей, они наследуются из
суперкласса Encapsulate, так же как и метод getField4(). Поскольку
метод main() находится в классе Encapsulate, то для проверки работы
метода method1() нужно создать экземпляр класса Class2 и вызвать
этот метод, что и происходит в строке 10.
      Интересно отметить особенность инкапсуляции, когда поле
filed4, объявленное с ключевым словом private, не доступно в классах
потомках, хотя и наследуется. Для проверки этого факта измените стро-
ку 18, заменив вызов getField4() на прямой запрос значения поля
this.filed4. В данном случае Eclipse сообщит об ошибке, а именно, что
поле Encapsulate.field4 не доступно. Принцип инкапсуляции приме-
няется для сокрытия переменных или методов класса от внешних кли-
ентов (классов, методов).
      П р о г р а м м а 2 . Полиморфизм.
 01 public class Polymorph {
 02     void method1(){
 03        System.out.println("Это был вызван метод суперкласса

                                             56


             С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


     Polymorph");
04     }
05     public static void main(String[] args) {
06       new NewClass1().method1();
07       new NewClass2().method1();
08       }
09   }
10   class NewClass1 extends Polymorph {
11     void method1(){
12       System.out.println("Это был вызван метод класса потомка
13   NewClass1");
14     }
15   }
16   class NewClass2 extends Polymorph {
17     void method1(){
         System.out.println("Это был вызван метод класса потомка
18   NewClass2");
19     }
20   }
     В приложении демонстрируется простейший пример полиморфиз-
ма. Имеется три класса Polymorph, NewClass1, NewClass2, причем
Polymorph является суперклассом по отношению к NewClass1,
NewClass2. В классе Polymorph описан метод method1() (02), который
выводит сообщение в консоль. Классы NewClass1, NewClass2 наследу-
ют этот метод и переопределяют его (override), осуществляя тем самым
перегрузку метода. Далее в методе main() суперкласса создается два
объекта экземпляра классов.
     В результате оба класса наследуют один и тот же метод, но выпол-
няется он у каждого из них по-разному или в разной форме. Таким об-
разом, вызывая один и тот же метод, с помощью разных объектов мож-
но получить разные по форме результаты, тогда более понятным стано-
вится смысл термина «полиморфизм».
     Задания к работе
        1. Создайте приложение, в котором имеются три класса:
     fclass1, fclass2, fclass3. В классе fclass1 содержится метод
     main(). Класс fclass3 наследуется от fclass1, а fclass2 — от
     fclass3.
        2. Создайте приложение, в котором имеются два класса:
     fclass1, fclass2. В классе fclass1 содержится метод main().
     Создайте методы в fclass2 для доступа к закрытым переменным
     класса fclass1.




                                             57


           С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


      Лабораторная работа №8
      Тема работы. Работа с графическим интерфейсом пользователя.
Обработка событий.
      Цель работы. Знакомство с элементами разработки графическо-
го интерфейса пользователя. Создание приложения из нескольких
файлов.
      Содержание работы. В данной работе рассматриваются програм-
мы, демонстрирующие основы работы с графическим интерфейсом
пользователя и обработкой событий компонентов ГИП.
      В данной работе для создания программы графопостроителя нам
понадобится четыре класса, которые будут находиться в разных файлах.
Для того, чтобы в дальнейшем избежать путаницы, необходимо данные
файлы поместить в отдельную папку (или, в интерпретации платформы
Eclipse, в отдельный подпакет). Создайте новую папку, щелкнув правой
кнопкой мыши на имени проекта в представлении Package explorer, и в
раскрывшемся меню (рис. 15), выбрав пункт «Folder». Назовите ее
«MyGraph». Затем в данной папке аналогично создайте четыре новых
класса:
         ● «Graphic» — главный класс, в котором будет метод main().
         ● «Sinus» — класс графика синуса.
         ● «Cosinus» — класс графика косинуса.
         ● «X2» — класс графика параболы.
      Помните, если классы описаны с любым из модификаторов види-
мости public, protected или private, то имена классов должны совпа-
дать с именами файлов, в которых хранятся данные классы.
      После того, как классы будут созданы, введите предложенный
ниже код программы.
      П р о г р а м м а 1 . Построение графиков элементарных функций.
      Класс Graphic
 01 package MyGraph;
 02 import java.awt.*;
 03 import java.awt.event.*;
 04 import javax.swing.*;
 05 public class Graphic extends JFrame{
 06      Graphic(String s){
 07        super(s);
 08        setLayout(null);
 09        setSize(120,200);
 10        setVisible(true);
 11        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
 12        this.setResizable(false);
 13        Button sin = new Button("Sin");
 14        sin.setBounds(5, 20, 100, 25);

                                           58


             С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


15         add(sin);
16         Button cos = new Button("Cos");
17         cos.setBounds(5, 70, 100, 25);
18         add(cos);
19         Button x2 = new Button("Парабола");
20         x2.setBounds(5, 120, 100, 25);
21         add(x2);
22         sin.addActionListener(new ActionListener(){
23           public void actionPerformed(ActionEvent event){
24             new Sinus("Синус");
25           }
26         });
27         cos.addActionListener(new ActionListener(){
28           public void actionPerformed(ActionEvent event){
29             new Cosinus("Косинус");
30           }
31         });
32         x2.addActionListener(new ActionListener(){
33           public void actionPerformed(ActionEvent event){
34             new X2("Парабола");
35           }
36         });
37       }
38       public static void main(String[] args) {
39         new Graphic("Графопостроитель");
40       }
41   }

     Класс Sinus
01   package MyGraph;
02   import java.awt.Color;
03   import java.awt.Graphics;
04   import javax.swing.JFrame;
05   public class Sinus extends JFrame{
06     Sinus(String s){
07       super(s);
08       setLayout(null);
09       setSize(600,300);
10       setVisible(true);
11       this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
12       this.setResizable(false);
13       this.setLocation(100, 100);
14     }
15     public void paint(Graphics gr){
16       int y; int j=0; int k=0;
17       gr.setColor(Color.WHITE);
18       gr.fillRect(0, 0, 600, 300);
19       gr.setColor(Color.lightGray);
20       while(j<600){


                                             59


               С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


21             gr.drawLine(j, 0, j, 300);
22             j+=30;
23           }
24           while(k<300){
25             gr.drawLine(0, k, 600, k);
26             k+=30;
27           }
28           gr.setColor(Color.BLACK);
29           gr.drawLine(300, 0, 300, 300);
30           gr.drawLine(0, 150, 600, 150);
31           gr.drawLine(120, 140, 120, 160);
32           gr.drawLine(480, 140, 480, 160);
33           gr.drawString("0", 305, 165);
34           gr.drawString("-"+"\u03c0", 125, 140);
35           gr.drawString("\u03c0", 485, 140);
36           gr.setColor(Color.RED);
37           for(double i=0;i<1000;i++){
38             y=(int)(80*Math.sin(Math.PI*i/180));
39             gr.drawLine((int)i-240, y+150, (int)i-240, y+150);
40           }
41           gr.dispose();
42       }
43   }

     Класс Cosinus
01   package MyGraph;
02   import java.awt.Color;
03   import java.awt.Graphics;
04   import javax.swing.JFrame;
05   public class Cosinus extends JFrame{
06     Cosinus(String s){
07       super(s);
08       setLayout(null);
09       setSize(600,300);
10       setVisible(true);
11       this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
12       this.setResizable(false);
13       this.setLocation(200, 200);
14     }
15     public void paint(Graphics gr){
16       int y; int j=0; int k=0;
17       gr.setColor(Color.WHITE);
18       gr.fillRect(0, 0, 600, 300);
19       gr.setColor(Color.lightGray);
20       while(j<600){
21         gr.drawLine(j, 0, j, 300);
22         j+=30;
23       }
24       while(k<300){


                                               60



    
Яндекс цитирования Яндекс.Метрика