Создание программ на Java Управляющие структуры языка, объявление классов и методов, компиляция и запуск программ
Кафедра ЮНЕСКО по НИТ, 2008 Область видимости блока public static void main(String [] args) { int n; // начало блока 1 … { // начало блока 2 // переменная n видна из этого блока int k; int n; // Ошибка – невозможно переопределить переменную n во вложенном блоке //переменная k определена только в этом блоке } // конец блока 2 } // конец блока 1
Кафедра ЮНЕСКО по НИТ, 2008 Условные операторы if (условие) оператор // или if (условие) { оператор 1; оператор 2; } if (sale >=2*target) { performance=Отлично; } else if (sale >=1.5*target) {performance=Удовлетворительно; } else {System.out.println(Вы уволены);} Многовариантное ветвление Условный оператор имеет вид
Кафедра ЮНЕСКО по НИТ, 2008 Циклы while (условие) {операторы;} do оператор while (условие); while (balance < goal) { balance+=payment; years++; } Неопределенные циклы for (синиц. сч.; условие; обновил. сч.) {} for (int i = 1; i < = 10; i++){ System.out.println(i); } for (int i = 10; i > 0; -- i){ System.out.println(Обратный отсчет + i); } Определенные циклы
Кафедра ЮНЕСКО по НИТ, 2008 Многовариантное ветвление String input = JOptionPane.showInputDialog (Выберите вариант (1, 2, 3)); int choice = Integer.parseInt (input); switch (choice){ case 1: … break; case 2: … break; case 3: … break; default: // неверный выбор … break; } // метка case должна быть целочисленной!!!
Кафедра ЮНЕСКО по НИТ, 2008 Класс Тело класса может содержать объявление элементов (members) класса: полей; методов; внутренних типов (классов и интерфейсов); конструкторов; синициализаторов; статических синициализаторов. Модификатор class Имя_класса [extends Имя_класса 2] {тело класса из полей и методов} Объявление полей начинается с перечисления модификаторов. Затем указывается тип данных и имя переменной. Можно указывать начальное значение – синициализация. int a; final double PI=3.1415; final long creationTime=System.currentTimeMillis();
Кафедра ЮНЕСКО по НИТ, 2008 Методы Объявление метода состоит из заголовка и тела метода. Заголовок состоит из: модификаторов (доступа в том числе); типа возвращаемого значения или ключевого слова void; имени метода; списка аргументов в круглых скобках (аргументов может не быть); специального throws- выражения. Существует модификатор final, который говорит о том, что такой метод нельзя переопределять в наследниках. Можно считать, что все методы final-класса, а также все private- методы любого класса являются final. public void process(int x,final double y){ x=x*x+Math.sqrt(x); //y=Math.sin(x);-так писать нельзя,т.к.y -final!}
Кафедра ЮНЕСКО по НИТ, 2008 Сигнатура метода Сигнатура определяется именем метода и его аргументами (количеством, типом, порядком следования). Если для полей запрещается совпадение имен, то для методов в классе запрещено создание двух методов с одинаковыми сигнатурами. class Point { void get(){} void get(int x){} void get(int x,double y){} void get(double x,int y){}} Если в заголовке метода указан тип возвращаемого значения, а не void, то в теле метода обязательно должно встречаться return-выражение.
Кафедра ЮНЕСКО по НИТ, 2008 Конструкторы классов Формат объявления конструкторов похож на упрощенное объявление методов. Отсутствует тип возвращаемого значения public class Human { private int age; protected Human(int a){ // конструктор 1 age=a;} public Human(String name,Human mother,Human father){ age=0;} // конструктор 2 } Используется 2 конструктора. Это возможно, так как сигнатуры различные!!!
Кафедра ЮНЕСКО по НИТ, 2008 Наследование конструкторов public class Parent { private int x,y; public Parent(){ x=y=0;} public Parent(int newx,int newy){ x=newx; y=newy;} } public class Child extends Parent { public Child(){ super();} public Child(int newx,int newy){ super(newx,newy); } Ключевое слово super указывает на наследование конструктора от класса родителя Иногда требуется в конструкторе вызвать один из конструкторов данного класса. Для этого применяется ключевое слово this(), которое вызывает конструктор и принимает аргументы.
Кафедра ЮНЕСКО по НИТ, 2008 Функция Main Программа, написанная на Java, является набором классов. Понятно, что требуется некая входная точка, с которой должно начинаться выполнение приложения. public static void main(String[]args){} Аргументом метода main() является массив строк. Он заполняется дополнительными параметрами, которые были указаны при вызове метода. package test.first; public class Test { public static void main(String[]args){ for (int i=0;i
Кафедра ЮНЕСКО по НИТ, 2008 Задание путей к файлам Если при выполнении команды javac не вызывается компилятор языка Java, то необходимо в ОС прописать путь до исполняемых файлов Java: На UNIX-системе в файле ~/.bashrc или ~/.bash_profile прописать export PATH=$PATH:/usr/local/jdk/bin На Windows-системе в файл autoexec.bat добавить: SET PATH=c:\java\jdk1.5.01\bin;%PATH% или прописать путь до исполняемых файлов через переменные среды окружения При компиляции программ поиск исходных файлов компилятором javac происходит в соответствии со значением переменной classpath, которое может выглядеть следующим образом:.; c:\java\classes. Видно, что поиск файлов проводится в текущей директории, а затем в системных файлах Java. При компиляции можно переопределять путь следующим образом: javac –classpath d:\my_project …
Кафедра ЮНЕСКО по НИТ, 2008 Компиляция и запуск программ Для компиляции программы необходимо в командной строке набрать javac и указать через пробел компилируемые файлы: javac file1. java file2. java file3. java Необходимо помнить о том, что если файлы принадлежат пакету, то компиляцию нужно производить из директории, в которой этот пакет содержится. Для запуска скомпилированного проекта необходимо JVM указать имя класса, содержащего функцию main(): java Имя_класса_с_main Если проект содержится в пакете, то запуск осуществляется из той же директории, откуда проводилась компиляция. При этом необходимо указывать составное имя класса.
Кафедра ЮНЕСКО по НИТ, 2008 Задание 1. Откомпилировать и запустить программу, приведенную на слайде 11, из командной строки. Протестировать программу с передачей различного числа аргументов из командной строки. 2. Написать программу, в которой перебираются числа от 1 до 500 и выводятся на экран. Если число делится на 5, то вместо него выводится слово fizz, если на 7, то buzz. Если число делится на 5 и на 7, то выводить слово fizzbuzz. (% - остаток от деления). 3. Написать программу, в которой все переданные во входную строку аргументы выводятся на экран в обратной порядке. Например, если было передано 2 аргумента – make install, то на экран должно вывестись llatsni ekam. Замечение: для разбора слова по буквам необходимо использовать функцию charAt(). Например, str.charAt(i) вернет символ с позиции i в слове, записанном в строковую переменную str. Команда str.length() возвращает длину слова str. 1. Создать проект Калькулятор в среде Eclipse и запустить его.