Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






РАЗРАБОТКА КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ

 

Цель: создание консольных приложений.

 

Понятие и определение класса

Класс – это шаблон для объекта. Объект – это экземпляр класса. Данные класса называются переменными экземпляра. Каждый объект содержит собственную копию этих переменных. Метод предназначен для обработки данных. Определение класса:

 

class classname {

type instance-variable1;

type instance-variable2;

// …

type instance-variableN;

type methodname1 (parameter-list) {

// тело метода

}

type methodname2 (parameter-list) {

// тело метода

}

//…

type methodnameN(parameter-list) {

// тело метода

}

}

 

Рассмотрим пример класса, с помощью которого определяется минимальное и максимальное число.

 

Пример 1.1

class MinMax {

int x;

int y;

public int max(){

if(x>y) return x;

else return y;}

public int min(){

if(x<y) return x;

else return y;}

}

 

Для определения экземпляра класса используется синтаксис:

 

ИмяКласса имяпеременной;

имяпеременной = new ИмяКласса (параметры инициализации);

или

ИмяКласса имяпеременной = new ИмяКласса (параметры инициализации);

Членами класса могут быть:

• поля;

• методы;

• внутренние типы (классов и интерфейсов;

• конструкторы;

• инициализаторы;

• статические инициализаторы.

 

Поля и методы могут иметь одинаковые имена.

Пример 1.2

class Point {

int x=3;

int x() {return x;}

int y=x();

public static void main (String s[]) {

Point p=new Point();

System.out.println(p.x+", "+p.y);

System.out.println(p.x());

 

}

}

Результат программы: 3, 3

 

 

Модификаторы класса

public – класс доступен для использования, наследования вне зависимости от пакета или от каталога; public-классы должны храниться в файлах с именем имя_класса.java.

friendly – модификатор класса по умолчанию, если модификатор не определен явно для класса. Такой класс доступен только для объектов, находящихся в том же пакете. Вне пакета он выступает как private.

final – класс не может быть наследован, т.е. иметь подклассов.

abstract – класс, в котором объявлен хотя бы один абстрактный метод. Для таких классов нельзя создавать объекты. Такие классы используются для производных классов, а также для организации стандартизированных интерфейсов.

 

Пример 1.3

abstract class Myclass {

abstract void actMet();

}

 

Объявление методов

Объявление метода состоит из заголовка и тела метода. Состав заголовка:

• модификаторы (доступа в том числе);

• тип возвращаемого значения или ключевого слова void;

• имя метода;

• список аргументов в круглых скобках (аргументов может не быть);

• специальное throws-выражение.

Заголовок начинается с перечисления модификаторов. Для методов доступен любой из трех возможных модификаторов доступа. Также допускается использование доступа по умолчанию. Кроме этого, существует модификатор final, который говорит о том, что такой метод нельзя переопределять в наследниках. Можно считать, что все методы final-класса, а также все private-методы любого класса являются final.

Затем поддерживается модификатор native. Метод, объявленный с таким модификатором, не имеет реализации на Java. Он должен быть написан на другом языке (C/C++, Fortran и т.д.) и добавлен в систему в виде загружаемой динамической библиотеки (например DLL для Windows). Наконец, существует еще один специальный модификатор synchronized, который будет рассмотрен в теме, описывающей потоки.

Объявление объектов и операция new

Получение объектов класса это двухшаговый процесс. Во-первых, нужно объявить переменную типа «класс». Она не определяет объект. Это просто переменная, которая может ссылаться на объект. Во-вторых, нужно получить актуальную, физическую копию объекта и назначать ее этой переменной. Это можно сделать с помощью операции new. Операция new распределяет динамически (т.е. во время выполнения) память для объекта и возвращает ссылку на нее. Данная ссылка является адресом ячейки памяти, выделенной объекту вышеуказанной операцией. Затем эта ссылка сохраняется в переменной. Таким образом, в Java все объекты класса должны быть распределены динамически.

Ниже приведен пример, в котором создается объект типа Box двумя способами.

 

Пример 1.4

// первый способ

Box mybox = new Box();

// второй способ

Box mybox; // объявить ссылку на объект

mybox = new Box(); // распределить память для Вох-объекта

 

Первый вариант комбинирует два шага, как это было вначале описано, второй пошагово создает объект типа Box.

 

Метод main

Итак, виртуальная машина реализуется приложением операционной системы и запускается по обычным правилам. Программа, написанная на Java, является набором классов. Требуется некая входная точка, с которой должно начинаться выполнение приложения. Такой входной точкой, по аналогии с языками C/C++, является метод main(). Для объявления метода main() используется следующий синтаксис:

 

public static void main(String[] args) {}

Модификатор static позволяет вызвать метод main(), не создавая объектов. Метод не возвращает никакого значения, хотя в C есть возможность указать код возврата из программы. В Java для этой цели есть метод System.exit(), который закрывает виртуальную машину и имеет аргумент типа int.

Аргументом метода main() является массив строк. Он заполняется дополнительными параметрами, которые были указаны при вызове метода.

Пример 1.5

Пример демонстрирует вывод в консоль параметров, переданных в метод main. Для запуска примера необходимо передать сами параметры, например

java test.first.Test HelloWorld

package test.first;

public class Test {

public static void main(String[] args) {

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

System.out.print(args[i]+" ");

}

System.out.println();

}

}

 

Результат работы программы: HelloWorld

 

Если вышеприведенный модуль компиляции сохранен в файле Test.java, который лежит в директории test\first, то вызов компилятора записывается следующим образом:

javac test\first\Test.java

А вызов виртуальной машины:

java test.first.Test

 

Конструкторы

Конструктор – это тот же метод класса, обладающий некоторыми особенностями:

· имеет такое же название, как и класс;

· вызывается сам;

· не возвращает никакого значения.

Ниже продемонстрирован пример перегрузки конструктора.

 

Пример 1.6

// перегрузка конструктора

class worker

{ private int Age;

public String Name;

public worker() // конструктор без параметров

{ Age = 20;}

public worker(int newAge, String newName)

{ Age = newAge;

Name = newName; }

public int getAge()

{return Age;}

};

class worker_pub

{ public static void main(String args[])

{ worker wrk1 = new worker( );

worker wrk2 = new worker(40, "Petrov");

System.out.println(wrk1. getAge()+wrk1.Name);

System.out.println(wrk2. getAge()+wrk2.Name); } }

 

Результат выполнения программы:

20null

40Petrov

 

Если конструктор не определяется явно, то Java создает его сам, без параметров.

 

Последнее изменение этой страницы: 2016-08-11

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...