И.Н. Блинов, В.С. Романчик - Основы программирования на языке Java
Описание файла
PDF-файл из архива "И.Н. Блинов, В.С. Романчик - Основы программирования на языке Java", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТМЕХАНИКО-МАТЕМАТИЧЕСКИЙ ФАКУЛЬТЕТКафедра численных методов и программированияОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ JAVAМЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО КУРСУ“МЕТОДЫ ПРОГРАММИРОВАНИЯ”Для студентов механико-математического факультетаМИНСКБГУ2002Авторы–составителиИ. Н.
Блинов, В. С. РоманчикР е ц е н з е н т ы:кандидат физико-математических наук, доцент И. М. Галкинкандидат физико-математических наук В.И. АдамовичРекомендовано Ученым советоммеханико-математического факультета БГУ“5” марта 2002 г., протокол № 5PDF-версия:Д. П.
Глиндзич, А. В. Грызлов©БГУ, 20022Cодержание1.2.3.4.5.6.7.8.9.10.11.12.Основные понятия языка Java. Приложения и апплеты …………...…4Типы данных и операции. Операторы управления программой…..…9Классы, как новые типы данных. Поля данных и методы………...…15Полиморфизм. Конструкторы………………………………………....19Интерфейсы.
Пакеты…………………………………………………...25Класс String. Потоки ввода/вывода…………………………………....30Обработка исключительных ситуаций……………………………..…36Классы событий………………………………………………………...41Графические интерфейсы пользователя……………………………....48Элементы управления……………………………………………….…57Потоки и многопоточность………………………………………….…64Сетевые программы………………………………………………….…7331. ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА JAVA.ПРИЛОЖЕНИЯ И АППЛЕТЫЯзык Java − это объектно-ориентированный язык программирования, используемый для разработки программ, работающих в сетиInternet.
Разработан в корпорации Sun Microsystems Inc. в 1995 году.Система программирования Java позволяет использовать World WideWeb (WWW) для распространения небольших интерактивных прикладных программ, которые размещаются на серверах Internet, транспортируются клиенту по сети, автоматически устанавливаются и запускаются на месте как часть документа WWW. Такая программа −апплет имеет весьма ограниченный доступ к ресурсам компьютераклиента, поэтому он может предоставить произвольный мультимедийный интерфейс и выполнять сложные вычисления, не привносяпри этом риска порчи данных. Другим видом программ являются приложения Java, представляющие переносимые коды, которые могутвыполняться на любом компьютере, независимо от его архитектуры.Генерируемый при этом виртуальный код представляет набор инструкций для выполнения на интерпретаторе виртуального кода − виртуальной Java-машине (Java Virtual Machine). Широкое распространение получили сервлеты и JSP (Java Server Pages), предоставляющиеклиентам доступ к базам данных и приложениям на сервере.Язык Java использует синтаксис языка C++ и может рассматриваться как его развитие.
Основные отличия от C++ связаны с необходимостью уменьшения размеров программ и увеличения требований кбезопасности переносимых приложений, работающих в сети. Java неподдерживает указателей (наиболее опасное средство языка С++), таккак возможность работы с произвольными адресами памяти через безтиповые указатели позволяет игнорировать защиту памяти.В Java все объекты программы расположены в динамической памяти (heap) и доступны по объектным ссылкам.
Это решение исключилонепосредственный доступ к памяти, но усложнило работу с элементами массивов и сделало ее менее эффективной по сравнению с C++программами. Необходимо отметить, что объектные ссылки языкаJava содержат информацию о классе объектов, на которые они ссылаются, так что объектные ссылки − это не указатели, а дескрипторыобъектов.
Наличие дескрипторов позволяет JavaVM выполнять проверку совместности типов на фазе интерпретации кода, генерируя исключение в случае ошибки. В Java пересмотрена и концепция дина4мического распределения памяти: исключены функции освобождениядинамически выделенной памяти free()/delete. Вместо этого реализована система автоматического освобождения памяти, выделенной спомощью оператора new (сборщик мусора).Стремление упростить Java-программы и сделать их более понятными привело к отказу от файлов-заголовков (h-файлов) и препроцессорной обработки. Файлы-заголовки С++, содержащие прототипыклассов и распространяемые отдельно от двоичного кода этих классов, усложняют управление версиями, что дает возможность злонамеренным пользователям получать доступ к приватным данным. В Javaпрограммах спецификация класса и его реализация всегда содержатсяв одном и том же файле. Но отказ от препроцессора сделал невозможным параметризацию классов по типам (классам) их членов, что усложнило программирование простых вещей (например, на Java, в отличие от C++, нельзя иметь массив, элементами которого являютсяобъекты произвольного класса).Java не поддерживает структуры и объединения.
Классы Java неподдерживают перегрузку операторов (в том числе: <<, >>), а такжеаргументов по умолчанию. Java не поддерживает множественное наследование, имеет конструкторы, но не имеет деструкторов (использует автоматическую сборку мусора), не поддерживает typedef, беззнаковые целые, не использует goto.Наиболее существенные новые возможности, появившиеся в Java,это интерфейсы (аналог абстрактных классов C++) и многопоточность(возможность одновременного выполнения частей программы).// пример #1 : простое приложение: First.javaclass First {public static void main (String[] args) {System.out.println("Моя Первая Программа На Java !!! "); }}Здесь класс First содержит метод main() с аргументамипараметрами командной строки String[] args, который является открытым членом класса.
Программа представляет собой приложение,запускаемое интерпретатором, поэтому ее выполнение обязательнодолжно начинаться с открытого (public) метода main(), который виден и доступен любому классу. Ключевое слово static объявляет методы и переменные класса, используемые для работы с классом в целом. Символы верхнего и нижнего регистров различаются, как и вC++.
Вывод строки "Моя Первая Программа На Java !!!" осуществляется методом println() (ln – переход к новой строке после вывода)5класса System, который включается автоматически вместе с пакетомjava.lang. Программа помещается в файл, имя которого совпадает сименем класса. Простейший способ компиляции − вызов строчногокомпилятора: javac First.java. При успешной компиляции создаетсяфайл First.class. Выполнить этот виртуальный код можно с помощьюинтерпретатора Java: java First.Следующая программа отображает в окне консоли аргументы командной строки функции main().
Аргументы представляют массивстрок, значения которых присваиваются объектам массива String[]args. Количество аргументов является значением args.length.// пример #2 : Вывод аргументов командной строки : OutArgs.javaclass OutArgs {public static void main(String[] args) {for (int j = 0; j < args.length; j++)System.out.println("Аргумент #" + j + "-> " + args[j]); }}Запустим это приложение с помощью следующей командной строки:Java OutArgs 2001 argument2 "Java-string"Вывод: Аргумент #0-> 2001Аргумент #1-> argument2Аргумент #2-> Java-stringВ следующем примере рассматривается ввод строки с консоли.// пример # 3: Ввод строки с консоли: Input.javaimport java.io.*;class Input {public static void main(String[] args){InputStreamReader is = new InputStreamReader(System.in);BufferedReader bis = new BufferedReader(is);try {System.out.println("Введите Ваше имя и нажмите <Enter>:");String name = bis.readLine();System.out.println("Привет, "+name); }catch (IOException e){System.out.println("ошибка ввода "+ e); }}}Одна из целей разработки Java − это создание апплетов (маленькихпрограмм, запускаемых внутри Web-браузера).
Поскольку апплетыдолжны быть безопасными, они ограничены в своих возможностях,6хотяостаютсямощныминструментомподдержкиWebпрограммирования на стороне клиента.// пример #4 : простой апплет : HelloApplet.javaimport java.applet.Applet;import java.awt.Graphics;public class HelloApplet extends Applet {public void paint(Graphics g) {g.drawString("Это Я!", 50, 25);g.drawString("Здравствуйте!", 100, 40); }}Апплету не нужен метод main() − код его запуска помещается вметод init() или paint(). Для запуска апплета нужно поместить ссылкуна него в HTML документ и просмотреть этот документ Webбраузером, поддерживающим Java. При этом можно обойтись оченьпростым фрагментом (тегом) HTML внутри документа:<applet code = HelloApplet width=100 height=100></applet>Классы в Java содержат переменные-члены класса и функциичлены класса, а также могут содержать конструкторы.
Основные отличия от классов C++: все функции определяются внутри классов иназываются методами; невозможно создать функцию, не являющуюсяметодом класса или объявить метод вне класса; ключевое слово inlineне поддерживается; cпецификаторы доступа public, private, protectedвоздействуют только на то, перед чем они стоят, а не на участок отодного до другого спецификатора как в С++; элементы по умолчаниюне устанавливаются в private, а доступны для классов из данного пакета.
Объявление класса имеет вид:[спецификатор] class имя_класса [extends суперкласс ] [implementsинтерфейс ]Спецификатор доступа класса может быть public (класс доступенобъектам данного пакета и вне пакета), final (класс не может иметьподклассов), abstract (класс содержит абстрактные методы, объектытакого класса могут создавать только подклассы). По умолчанию спецификатор устанавливается в friendly (класс доступен в данном пакете). Слово friendly при объявлении не используется. Файл, содержащий public class, должен иметь то же имя, что и класс.//пример #5: вычисление расстояния между точками Distance.javaclass Locate {private double x,y;setXY(double a, double b){x = a; y = b;}//по умолчанию friendly7double getX(){return x;}double getY(){return y;}}public class Distance {public static void main(String[] args){//локальные переменные не являются членами классаLocate t1 = new Locate();Locate t2 = new Locate();double dx,dy,distance;t1.setXY(5, 10); t2.setXY(2, 6);dx = t1.getX() - t2.getX();dy = t1.getY() - t2.getY();distance= Math.sqrt(dx*dx+dy*dy);//Вычисление расстоянияSystem.out.println("Расстояние равно: "+distance); }}Вывод: Расстояние равно: 5.0Здесь используется статический метод sqrt() из класса Math безобъявления объекта указанного класса.
Класс Math содержит методыдля физических и технических расчетов, а также константы E и PI.Создание объекта класса – это двухшаговый процесс. Сначала объявляется ссылка на объект класса. Затем с помощью оператора newсоздается экземпляр объекта, например следующим образом:Locate t1; //Объявление ссылкиt1 = new Locate(); //Создание объектаЧасто эти два этапа объединяются в один:Locate t1 = new Locate();Оператор new вызывает конструктор, поэтому в круглых скобкахмогут стоять аргументы, передаваемые конструктору.