Презентация по Программированию. Книга Программирование на Java для начинающих
Скачать 4.47 Mb.
|
class SuperClass { } 2. Внутри фигурных скобок класса добавьте метод, который выводит строку для идентификации. public static void hello( ) { System.out.println( "Привет из Суперкласса" ) ; } 3. Добавьте второй метод, который пытается вывести переданный ар- гумент, затем сохраните файл под именем SuperClass.java. public static void echo( String arg ) { try { System.out.println( "Вы ввели: " + arg ) ; } catch( Exception e ) { System.out.println( "Требуется аргумент" ) ; } } JAVA SuperClass.java 107 4. Создайте новую программу с именем SubClass, которая расширяет класс SuperClass. class SubClass extends SuperClass { public static void main ( String[] args ) { } } 5. После главного метода добавьте еще один метод, который выводит строку для идентификации, перегружая наследуемый метод с тем же именем. public static void hello() { System.out.println( "Привет из Подкласса" ) ; } 6. Внутри фигурных скобок главного метода добавьте вызов пере- гружаемого метода, а затем явный вызов метода с тем же именем в суперклассе. hello() ; SuperClass.hello() ; 7. Добавьте вызов другого наследуемого метода. echo( args[0] ) ; 8. Сохраните программу под именем SubClass.java, затем скомпили- руйте и запустите, не вводя аргумент в командной строке. 9. Отредактируйте файл SubClass.java, добавив для вызова метода свой собственный блок операторов try catch, перехватывающий исключения, а затем скомпилируйте и заново запустите програм- му, чтобы увидеть, что проблема решена. JAVA SubClass.java На заметку Более подробную информа- цию по перехвату исключе- ний см. в главе 4. 6. С оздание к лас со в 108 Создание объектного класса Объекты реального мира, окружающие нас, можно описать при помо- щи атрибутов (характеристик или свойств), а также действий, которые они выполняют. Например, автомобиль можно описать при помощи атрибутов «красный», «купе», а также при помощи действия «ускоряет- ся». Применительно к Java-программированию все это можно предста- вить при помощи класса Car, содержащего свойство color и bodyType, а также метод accelerate(). Поскольку в Java-программировании широко применяются атри- буты и методы объекта, говорят, что Java является объектно- ориентированным языком программирования. Объекты в Java создаются при помощи определения класса в качестве шаблона, из которого могут быть произведены копии (экземпляры ). Каждому экземпляру класса можно присвоить атрибуты и методы, описывающие объект. Далее мы создаем класс Car в качестве шабло- на класса с атрибутами и методами по умолчанию, описанными выше. После этого создается экземпляр класса Car, который наследует те же самые атрибуты и методы по умолчанию. 1. Начните новый шаблон класса с именем Car. class Car { } JAVA FirstObject.java 109 2. Внутри фигурных скобок класса Car объявите и проинициализи- руйте две глобальные строковые константы, описывающие атри- буты. public final static String color = "Красный" ; public final static String bodyType = "Купе" ; 3. Добавьте глобальный метод, описывающий действие. public static String accelerate() { String motion = "Ускоряется..." ; return motion ; } 4. После класса Car начните новый класс с именем FirstObject, со- держащий стандартный метод main. class FirstObject { public static void main ( String[] args ) { } } 5. Внутри фигурных скобок главного метода добавьте операторы для вывода каждого из значений атрибутов класса Car, а также вызова его метода. System.out.println( "Цвет " + Car.color ) ; System.out.println( "Тип кузова " + Car.bodyType ) ; System.out.println( Car.accelerate() ) ; 6. Сохраните программу под именем FirstObject.java, затем скомпили- руйте и запустите. На заметку Ключевое слово static объяв ляет переменные и ме- тоды класса в данном случае как члены класса Car. Совет Классы объектов обычно создаются перед классом программы, содержащим метод main. 6. С оздание к лас со в 110 Создание экземпляра объекта Каждый класс содержит встроенный метод, который можно использо- вать для создания нового экземпляра этого класса. Этот метод называ- ется «конструктор ». Он имеет то же самое имя, что и класс, и запуска- ется с ключевым словом new. Каждый экземпляр класса наследует атрибуты и действия объекта. Принцип наследования является одним из основных в Java- програм- мировании. Благодаря ему программы могут использовать «готовые» свойства. Для большей гибкости шаблоны класса можно определять в отдельном файле, который затем можно использовать в разных программах. 1. Начните новый файл, скопировав шаблон класса Car из предыду- щего примера. class Car { public final static String color = "Красный" ; public final static String bodyType = "Купе" ; public static String accelerate() { String motion = "Ускоряется..." ; return motion ; } } 2. Сохраните файл под именем Car.java. 3. Создайте новую программу с именем FirstInstance, содержащую стандартный метод main. class FirstInstance { public static void main ( String[] args ) { } } JAVA Car.java JAVA FirstInstance.java 111 4. Внутри фигурных скобок главного метода добавьте операторы для вывода каждого из значений атрибутов класса Car, а затем вызови- те его метод. System.out.println( "Цвет автомобиля " + Car.color ) ; System.out.println( "Тип кузова "+ Car.bodyType ) ; System.out.println( Car.accelerate() ) ; 5. Теперь добавьте операторы для создания экземпляра Porsche клас- са Car. Car class Car Porsche = new Car() ; 6. Добавьте операторы для вывода унаследованных значений каждого атрибута Porsche, а также вызова его метода. System.out.println( "Цвет Porsche " + Porsche.color ) ; System.out.println( "Тип кузова Porsche " + Porsche.bodyType ); System.out.println( Porsche.accelerate() ) ; 7. Сохраните программу под именем FirstInstance.java рядом с файлом шаблона Car.java, затем скомпилируйте и запустите. Для нового объекта Porsche создается виртуальный класс, который копирует исходный класс Car. Оба этих объекта содержат статические переменные класса и метод класса, к которым можно обратиться, ис- пользуя точечную запись и имя класса, но поскольку они доступны глобально, то это является не очень хорошей практикой программи- рования. В данном примере демонстрируется, как экземпляр объекта наследует свойства исходного класса. В следующем примере используются неста- тические члены — переменная экземпляра и метод экземпляра, к кото- рым нельзя обратиться извне класса, поскольку они глобально не до- ступны, и это является хорошей практикой программирования. На заметку Вы не можете обратиться к переменной motion на- прямую — она находится за пределами видимости внутри объявления метода. Совет Компилятор автоматически находит класс Car во внеш- нем файле .java и создает скомпилированный файл .class для него. 6. С оздание к лас со в 112 Инкапсуляция свойств Когда нужно описать переменные и методы объекта и защитить их от обработки внешним программным кодом, используется ключевое сло- во private (закрытый). Для вызова значений переменных, а также вы- зова методов, в объект можно включать общедоступные методы. Дан- ный прием инкапсулирует переменные и методы внутри структуры объекта. Это демонстрируется в следующих шагах, которые воспроиз- водят предыдущий пример с инкапсуляцией метода и атрибутов. 1. Начните новый класс с именем Car. class Car { } 2. Внутри фигурных скобок класса объявите три закрытые строковые переменные для хранения атрибутов объекта. private String maker ; private String color ; private String bodyType ; 3. Добавьте закрытый метод, описывающий действие. private String accelerate() { String motion = "Ускоряется..." ; return motion ; } 4. Добавьте общедоступный метод для присваивания значения пере- данного аргумента каждой из закрытых переменных. public void setCar( String brand , String paint , String style ) { maker = brand ; color = paint ; bodyType = style ; } 5. Добавьте еще один общедоступный метод, обращающийся к значе- ниям закрытых переменных и вызывающий закрытый метод. JAVA SafeInstance.java 113 { System.out.println( maker + " цвет " + color ) ; System.out.println( maker + " тип кузова " + bodyType ) ; System.out.println( maker + " " + accelerate() + "\n" ) ; } 6. После класса Car начните еще один класс с именем SafeInstance, содержащий стандартный метод main. class SafeInstance { public static void main ( String[] args) { } } 7. Внутри фигурных скобок главного метода добавьте оператор, соз- дающий экземпляр класса Car. Car Porsche = new Car() ; 8. Добавьте оператор, который вызывает общедоступный метод клас- са Car для присваивания значений его закрытым переменным. Porsche.setCar( "Porsche" , "Красный" , "Купе" ) ; 9. Теперь добавьте оператор для вызова еще одного общедоступного метода класса Car, вызывающего сохраненные значения атрибутов, а также закрытый метод, определяющий действие. Porsche.getCar() ; 10. Создайте еще один экземпляр, сначала присвоив, а потом вызвав значение. Car Bentley = new Car() ; Bentley.setCar( "Bentley" , "Зеленый" , "Седан" ) ; Bentley.getCar() ; 11. Сохраните программу под именем SafeInstance.java, затем компили- руйте и запустите. На заметку Проинициализированная строковая переменная хранит значение null — та- ким образом, вызов метода getCar() перед методом setCar() возвратит значение null каждой из переменных. 6. С оздание к лас со в 114 Создание объектных данных Метод конструктора объекта можно вызывать напрямую в классе объек та, для того чтобы проинициализировать его переменные. Это позволит хранить отдельно объявление и присваивание, что является хорошим стилем программирования. Этот пример демонстрируется в следующих шагах, которые воспроизводят предыдущий пример с ин- капсулируемыми методом и атрибутами вместе с инициализацией при помощи конструктора. 1. Начните новый класс с именем Car. class Car { } 2. Внутри фигурных скобок класса объявите три закрытые строковые переменные для хранения атрибутов объекта. private String maker ; private String color ; private String bodyType ; 3. Добавьте метод constructor, в котором инициализируются все три переменные со значениями атрибутов. public Car() { maker = "Porsche" ; color = "Серебристый" ; bodyType = "Купе" ; } 4. Добавьте закрытый метод, описывающий действие. private String accelerate() { String motion = "Ускоряется..." ; return motion ; } 5. Добавьте общедоступный метод для присваивания значений пере- данного аргумента каждой из закрытых переменных. JAVA Constructor.java Внимание В объявлениях конструк- тора не указываются типы данных. 115 public void setCar( String brand , String paint , String style ) { maker = brand ; color = paint ; bodyType = style ; } 6. Добавьте еще один общедоступный метод, который выводит значе- ния закрытых переменных и вызывает закрытый метод. public void getCar() { System.out.println( maker + " цвет " + color ) ; System.out.println( maker + " тип кузова " + bodyType ) ; System.out.println( maker + " " + accelerate() + "\n" ) ; } 7. После класса Car добавьте еще один класс с именем Constructor, содержащий стандартный метод main. class Constructor { public static void main ( String[] args ) { } } 8. Внутри фигурных скобок главного метода добавьте операторы для создания экземпляра класса Car и вызова первоначальных значе- ний по умолчанию. Car Porsche = new Car() ; Porsche.getCar() ; 9. Создайте еще один экземпляр, присвоив и вызвав значения. Car Ferrari = new Car() ; Ferrari.setCar( "Ferrari" , "Красный" , "Спортивный" ) ; Ferrari.getCar() ; 10. Сохраните программу под именем Constructor.java, затем скомпи- лируйте и запустите. 6. С оздание к лас со в 116 Заключение • Разбиение программ на многочисленные методы, которые можно вызывать при необходимости, увеличивает гибкость и упрощает отслеживание ошибок. • Перегруженные методы имеют то же имя, но принимают другие ар- гументы. • Переменные, объявленные внутри метода, имеют локальную об- ласть видимости, а переменные класса — глобальную область ви- димости в пределах этого класса. • Ключевое слово static используется для объявления методов и пе- ременных класса, которые имеют глобальную область видимости в пределах этого класса. • Ключевое слово public явно разрешает доступ из любого класса. • Объявление класса может содержать ключевое слово extends, в ко- тором указывается суперкласс, откуда объявляемый класс будет наследовать свойства. • Для того чтобы явно обращаться к определенному методу класса или к его переменной, можно использовать имя класса и точечную запись. • Объекты реального мира имеют атрибуты и действия, которые можно представить в программах с помощью переменных и ме- тодов. • Объекты в Java создаются как шаблон класса, из которого можно сделать копии (экземпляры). • У каждого класса существует метод constructor, который можно запустить с помощью ключевого слова new для создания экземпля- ра этого класса. • Экземпляры наследуют атрибуты и методы класса, из которого они произведены. • Инкапсуляция защищает переменные экземпляра и методы экзем- пляра от доступа из внешних классов. • Ключевое слово private запрещает доступ снаружи класса. • Метод конструктора можно вызывать для инициализации атрибу- тов этого объекта. 7 7 Импортирование Импортирование функций функций В данной главе В данной главе демонстрируется, как демонстрируется, как из специализированных из специализированных Java-классов Java-классов импортировать импортировать в программы в программы дополнительную дополнительную функциональность. функциональность. • Работа с файлами • Работа с файлами • Чтение консольного ввода • Чтение консольного ввода • Чтение файлов • Чтение файлов • Запись файлов • Запись файлов • Сортировка элементов массива • Сортировка элементов массива • Создание списочных массивов • Создание списочных массивов • Работа с датой • Работа с датой • Форматирование чисел • Форматирование чисел • Заключение • Заключение 7. Импор тирование ф ункций 118 Работа с файлами Java содержит пакет с именем java.io, предназначенный для работы с процедурами ввода и вывода в файл. Такой пакет можно сделать до- ступным, если в самое начало файла .java включить оператор import. Для этого используется шаблон *, означающий включение всех классов пакета. Например, import java.io.* ;. В пакете java.io содержится класс с именем File, который может быть использован для доступа к файлам или целым каталогам. Вначале нуж- но создать объект File, используя ключевое слово new и указывая имя файла или имя каталога в качестве аргумента для конструктора. На- пример, синтаксис, создающий объект File с именем info, который будет представлять файл в локальной системе под именем info.dat, вы- глядит следующим образом: File info = new File( "info.dat" ) ; Данный файл будет расположен в том же каталоге, что и программа, но аргумент может содержать полный путь к файлу, расположенному в любом месте. Обратите внимание, что при создании объекта |