Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

java / java-intro_part_1_ibm-developerworks

.pdf
Скачиваний:
100
Добавлен:
11.05.2015
Размер:
6 Mб
Скачать

02.09.13

Введениев Java-программирование: Часть 1. Основы языкаJava

 

IBM

 

 

 

 

 

Русский

 

Войти (или Регистрация)

Техническиематериалы ПробноеПО Сообщество

Введение в Java-программирование: Часть 1. Основы языка

Java

Объектно-ориентированное программирование на платформе Java

Дж. Стивен Перри, главный консультант, Makoto Consulting Group, Inc.

Описание: В этом руководствеиз двух частей рассказывается о структуре, синтаксисеи парадигмепрограммирования языка и платформы Java™. Читатели познакомятся с синтаксисом Java, с которым им, скореевсего, придется иметь дело в своей профессиональной деятельности, и выражениями Java-программирования, которыеможно использовать для построения надежных, удобных в сопровождении Java-приложений. В первой части Дж. Стивен Перри рассказывает об основах объектноориентированного программирования на платформеJava, включая основополагающий синтаксис Java и способы его использования. Для начала вы научитесь создавать Java-объекты и наделять их поведением, а в концеэтой части познакомитесь с коллекциями Java –и в промежуткевас тоже, конечно, ждект много интересного.

Дата: 26.10.2011

Уровеньсложности: простой

Активность: 381344 просмотров

Средний показатель рейтинга (основанный на 274 голосов)

Концепции объектно-ориентированного программирования

Язык Java является (в основном) объектно-ориентированным. Тем, кто ещенеработал с объектно-ориентированным языком, его концепции на первый взглядмогут показаться странными. Этот раздел представляет собой краткоевведениев концепции языка ООП с использованием для сравнения методов структурного программирования.

Что такоеобъект?

Языки структурного программирования, такиекак Cи и COBOL, следуют совсем иной парадигмепрограммирования, чем объектно-ориентированныеязыки. Парадигма структурного программирования ориентирована на данные, что означает, что сначала создаются структуры данных, а затем пишутся команды для работы с этими данными. В объектно-ориентированных языках, таких как Java, данныеи команды программы скомбинированы в объекты.

Объект представляет собой автономный модуль со своими атрибутами и поведением, и ничего более. Вместо структуры данных с полями (атрибуты), которая отражается на всей логикепрограммы, влияющей на ееповедение, в объектноориентированном языкеданныеи логика программы объединены. Эта комбинация может быть реализована на совершенно разных уровнях детализации, от самых мелких объектов, таких как Number, до самых крупных, таких как служба FundsTransfer в большом банковском приложении.

Родительскиеи дочерниеобъекты

Родительский объектслужит в качествеструктурной основы для получения болеесложных дочернихобъектов. Дочерний объект повторяет родительский, но является болееспециализированным. Объектно-ориентированная парадигма позволяет многократно использовать общиеатрибуты и поведениеродительского объекта, добавляя к ним новыеатрибуты и поведениедочерних объектов. (Подробнеео наследовании см. в следующем разделенастоящего руководства.)

Связь между объектами и координация

Объекты общаются друг с другом, отправляя сообщения (на языкеJava ― вызовыметодов). Крометого, в объектноориентированных приложениях программа координирует взаимодействиемежду объектами для решения задачи в контексте данной предметной области. (В парадигме"модель-представление-контроллер" эта координирующая программа называется контроллером. См. раздел Ресурсы.)

Краткиесведения об объектах

Хорошо написанный объект:

www.ibm.com/developerworks/ru/edu/j-introtojava1/section5.html

1/3

02.09.13 Введениев Java-программирование: Часть 1. Основы языкаJava

имеет четкиеграницы;

имеет конечный набор действий; "знает" только о своих данных и любых других объектах, которыенужны для его деятельности.

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

Теперь посмотрим, как выглядит объект.

Объект Person

Начнем с примера, основанного на общем сценарии разработки приложений: физического лица, представленного объектом

Person.

Возвращаясь к определению объекта, вспомним, что объект состоит из двух основных элементов: атрибутов и поведения. Посмотрим, как это относится к объекту Person.

Атрибуты

Какиеатрибуты может иметь физическоелицо? Вот самыераспространенныеиз них:

имя,

возраст,

рост,

вес,

цвет глаз, пол.

Вероятно, можно придумать еще(дополнительныеатрибуты всегда можно добавить), но для начала этого достаточно.

Поведение

Физическоелицо может делать всечто угодно, но поведениеобъекта обычно относится к контексту какого-то приложения. Например, в контекстебизнес-приложения можно задать своему объекту Personвопрос: "Сколько вам лет?" В ответ на это Personсообщит значениесвоего атрибута "возраст".

Внутри объекта Personможет быть скрыта и болеесложная логика, но пока предположим, что Personумеет отвечать на вопросы:

Как вас зовут?

Сколько вам лет?

Ваш рост?

Ваш вес?

Какого цвета ваши глаза? Какого вы пола?

Состояниеи строка

Состояние ― важноепонятиев ООП. В каждый момент времени состояниеобъекта представлено значением его атрибутов.

В случаеобъекта Personего состояниеопределяется такими атрибутами, как имя, возраст, рост и вес. Если нужно представить список из нескольких атрибутов, это можно сделать, используя класс строки String, о котором мы поговорим чуть позже.

Вместеконцепции состояния и строки позволяют сказать объекту Person: "Назовитесебя, предъявив перечень (или строку) своих атрибутов".

5 из 18 | предыдущая | следующая

Печатьстраницы

Сделать этустраницуобщей

 

 

Помощь

 

Ленты

Конфиденциальность

Портал для студентов

Запрос на использование

Сообщить о нарушениях

Доступность (Английский)

Бизнес-партнеры IBM

материалов developerWorks

Условия использования

 

 

 

 

 

 

www.ibm.com/developerworks/ru/edu/j-introtojava1/section5.html

2/3

02.09.13

Введениев Java-программирование: Часть 1. Основы языкаJava

 

 

 

www.ibm.com/developerworks/ru/edu/j-introtojava1/section5.html

3/3

02.09.13

Введениев Java-программирование: Часть 1. Основы языкаJava

 

IBM

 

 

 

 

 

Русский

 

Войти (или Регистрация)

Техническиематериалы ПробноеПО Сообщество

Введение в Java-программирование: Часть 1. Основы языка

Java

Объектно-ориентированное программирование на платформе Java

Дж. Стивен Перри, главный консультант, Makoto Consulting Group, Inc.

Описание: В этом руководствеиз двух частей рассказывается о структуре, синтаксисеи парадигмепрограммирования языка и платформы Java™. Читатели познакомятся с синтаксисом Java, с которым им, скореевсего, придется иметь дело в своей профессиональной деятельности, и выражениями Java-программирования, которыеможно использовать для построения надежных, удобных в сопровождении Java-приложений. В первой части Дж. Стивен Перри рассказывает об основах объектноориентированного программирования на платформеJava, включая основополагающий синтаксис Java и способы его использования. Для начала вы научитесь создавать Java-объекты и наделять их поведением, а в концеэтой части познакомитесь с коллекциями Java –и в промежуткевас тоже, конечно, ждект много интересного.

Дата: 26.10.2011

Уровеньсложности: простой

Активность: 381344 просмотров

Средний показатель рейтинга (основанный на 274 голосов)

Принципы объектно-ориентированного программирования

Тем, кто пришел с багажом структурного программирования, смысл ООП может быть всеещенеясен. Ведь атрибуты лица и любую логику получения (и преобразования) их значений можно написать и на языкеCи или COBOL. В этом разделе преимущества парадигмы ООП разъясняются с помощью определения еепринципов: инкапсуляции, наследования и полиморфизма.

Инкапсуляция

Напомним, что объект преждевсего обладает свойством дискретности, или самодостаточности. Это следствиепринципа инкапсуляции . Ещеодин термин, который иногда используется, чтобы выразить автономную, защищенную природу объекта

скрытность.

Независимо от терминологии, важно то, что объект отделяет своесостояниеи поведениеот внешнего мира. Как и в реальном мире, объекты, используемыев программировании, поддерживают различныетипы отношений с различными категориями объектов в приложениях, гдеони используются.

На платформеJava можно использовать признаки доступа (о которых я расскажу позже), чтобы менять характер отношений объекта с публичныхна приватные. Публичный (public) доступ широко открыт, тогда как приватный (private) доступ означает, что атрибуты объекта доступны только внутри самого объекта.

Граница "публичный/приватный" обеспечивает объектно-ориентированный принцип инкапсуляции. На платформеJava можно варьировать силу этой границы для каждой пары объектов в зависимости от системы доверия. Инкапсуляция ― это мощная функция языка Java.

Наследование

В структурированном программировании часто копируют структуру, присваивают ей новоеимя и добавляют или изменяют свойства, благодаря чему новый объект(например, запись Account) отличается от своего оригинала. Со временем такой подходпорождает большоеколичество дублированного кода, что чревато проблемами обслуживания.

ООП вводит понятиенаследования, согласно которому специализированныеобъекты могут "наследовать" атрибуты и поведениеисходных объектов –без добавления кода. Если эти атрибуты или поведениенужно частично изменить, их просто переопределяют. Изменяется только то, что должно измениться для создания специализированного объекта. Как говорилось в разделеКонцепции объектно-ориентированного программирования, исходный объект называется родительским, а его новая специализация –дочерним объектом.

Наследование вдействии

www.ibm.com/developerworks/ru/edu/j-introtojava1/section6.html

1/2

02.09.13

Введениев Java-программирование: Часть 1. Основы языкаJava

Предположим, что вы пишетеприложениедля отдела кадров и хотитеиспользовать объект Personв качествеосновы для нового объекта Employee. Дочерний по отношению к Person, объект Employeeбудет иметь всеатрибуты объекта Person, а такжедополнительных атрибуты:

кодналогоплательщика,

дата приема на работу, заработная плата.

Наследованиепозволяет легко создать новый класс объектов Employeeбез необходимости копировать весь кодPerson вручную или поддерживать его.

В этом руководствевы встретитемножество примеров наследования, особенно во второй его части.

Полиморфизм

Полиморфизм –болеесложная для понимания концепция. В сущности, она означает, что объекты, принадлежащиек одной той жеветви иерархии, получая одно и то жесообщение(то есть когда им предписывают делать одно и то же), могут действовать по-разному.

Чтобы понять, как полиморфизм применяется в контекстебизнес-приложения, вернемся к примеру Person. Помните, как мы заставили Personотформатировать свои атрибуты в строку String? Полиморфизм позволяет Personпредставлять свои атрибуты различными способами в зависимости от типа объекта Person.

Полиморфизм –одно из наиболеесложных понятий, с которыми вы столкнетесь в ООП на платформеJava, и оно выходит за рамки вводного руководства. Болееподробныесведения о полиморфизмеможно получить по ссылкам в разделеРесурсы.

6 из 18 | предыдущая | следующая

Печатьстраницы

Сделать этустраницуобщей

 

 

Помощь

 

Ленты

Конфиденциальность

Портал для студентов

Запрос на использование

Сообщить о нарушениях

Доступность (Английский)

Бизнес-партнеры IBM

материалов developerWorks

Условия использования

 

 

 

 

 

 

 

 

 

 

 

www.ibm.com/developerworks/ru/edu/j-introtojava1/section6.html

2/2

02.09.13

Введениев Java-программирование: Часть 1. Основы языкаJava

 

IBM

 

 

 

 

 

Русский

 

Войти (или Регистрация)

Техническиематериалы ПробноеПО Сообщество

Введение в Java-программирование: Часть 1. Основы языка

Java

Объектно-ориентированное программирование на платформе Java

Дж. Стивен Перри, главный консультант, Makoto Consulting Group, Inc.

Описание: В этом руководствеиз двух частей рассказывается о структуре, синтаксисеи парадигмепрограммирования языка и платформы Java™. Читатели познакомятся с синтаксисом Java, с которым им, скореевсего, придется иметь дело в своей профессиональной деятельности, и выражениями Java-программирования, которыеможно использовать для построения надежных, удобных в сопровождении Java-приложений. В первой части Дж. Стивен Перри рассказывает об основах объектноориентированного программирования на платформеJava, включая основополагающий синтаксис Java и способы его использования. Для начала вы научитесь создавать Java-объекты и наделять их поведением, а в концеэтой части познакомитесь с коллекциями Java –и в промежуткевас тоже, конечно, ждект много интересного.

Дата: 26.10.2011

Уровень сложности: простой

Активность: 381344 просмотров

Средний показатель рейтинга (основанный на 274 голосов)

Начало работы с языком Java

Язык Java: не чисто объектно-ориентированный язык

Язык Java позволяет создавать первоклассныеобъекты, но невсе, что есть в этом языке, является объектом. От чисто объектно-ориентированных языков, таких как Smalltalk, язык Java отличают два качества. Во-первых, язык Java представляет собой смесь из объектов и простых типов. Во-вторых, он позволяет писать код, который раскрывает внутренниедетали одного объекта другому объекту, его использующему.

Язык Java дает инструменты, необходимыедля следования принципам ООП и создания качественного объектноориентированного кода. Так как Java неявляется чисто объектно-ориентированным языком, нужно придерживаться определенных правил программирования –язык невынуждает делать всеправильно, поэтому нужно следить за этим самостоятельно. (Соответствующиесоветы даются в последнем разделеэтой части руководства: Написаниекачественных Java-программ.)

В одном руководственевозможно представить весь синтаксис языка Java. В первой части основноевниманиеуделяется основам языка, что позволяет приобрести достаточно знаний и практики для написания простых программ. ООП относится к объектам, так что этот раздел начинается с двух тем, непосредственно связанных с тем, как язык Java работает с объектами: зарезервированныеслова и структура объекта Java.

Зарезервированныеслова

Как и в любом языкепрограммирования, в языкеJava резервируются определенныеслова, которыекомпилятор распознает как особые, и их нельзя использовать для именования конструкций Java. Список зарезервированных слов на удивление краток:

abstract assert boolean break byte case catch char class const continue

www.ibm.com/developerworks/ru/edu/j-introtojava1/section7.html

1/8

02.09.13

Введениев Java-программирование: Часть 1. Основы языкаJava

default do double else enum extends final finally float for goto

if implements import instanceof int interface long native

new package private protected public return short static strictfp super switch

synchronized this

throw throws transient try

void volatile while

Отметим, что true, falseи nullтехнически неявляются зарезервированными словами. Хотя это литералы, я включил их в этот список потому, что их нельзя использовать для именования Java-конструкций.

Одно из преимуществ программирования с помощью IDE состоит в том, что для зарезервированных слов можно использовать синтаксическую подсветку, как вы увидитедалеев этой статье.

Структура объекта Java

Как вы помните, объект представляет собой дискретный модуль со своими атрибутами и поведением. Это означает, что он имеет четкиеграницы и состояниеи может выполнять разнообразныедействия, если к нему правильно обратиться. В каждом объектно-ориентированном языкеесть правила определения объектов.

В языкеJava объекты определяются, как показано в листинге1.

Листинг 1. Определение объекта

package packageName;

import ClassNameToImport; accessSpecifier class ClassName {

accessSpecifier dataType variableName [= initialValue]; accessSpecifier ClassName([argumentList]) {

constructorStatement(s)

}

accessSpecifier returnType methodName([argumentList]) { methodStatement(s)

}

// Это комментарий

www.ibm.com/developerworks/ru/edu/j-introtojava1/section7.html

2/8

02.09.13

Введениев Java-программирование: Часть 1. Основы языкаJava

/* Это тоже комментарий */ /* Это

многострочный комментарий */

}

В листинге1 содержатся конструкции разного типа, которыея выделил с помощью форматирования шрифта. Конструкции, показанныежирным шрифтом (которыевы найдетев спискезарезервированных слов) –литералы; в любом определении объекта они должны быть точно такими же, как здесь. Имена, которыея дал другим конструкциям, описывают соответствующиепонятия. В оставшейся части этого раздела я объясню всеконструкции подробно.

Примечание. В листинге1 и некоторых других примерах кода в этом разделеквадратныескобки означают, что заключенные в них конструкции необязательны. Сами скобки (в отличиеот {и }) неявляются частью синтаксиса Java.

Комментариив коде

Обратитевнимание, что в листинг 1 включены такжестроки комментариев:

// Это комментарий /* Это тоже комментарий */ /* Это

многострочный комментарий */

Почти каждый язык программирования позволяет программисту добавлять комментарии, что помогает документировать код. Синтаксис Java допускает как однострочные, так и многострочныекомментарии. Однострочный комментарий должен находиться в одной строке, хотя можно использовать смежныеоднострочныекомментарии для формирования блока.

Многострочный комментарий начинается с символов /*, должен заканчиваться символами */и может занимать любое количество строк.

Подробнеео комментариях говорится в разделеНаписаниекачественных Java-программ.

Упаковка объектов

Язык Java позволяет выбирать имена объектов, такиекак Account, Personили LizardMan. Время от времени может получаться так, что одно и то жеимя должно выражать два разных понятия. Это называется конфликтом имен и происходит довольно часто. Для разрешения таких конфликтов в языкеJava используются пакеты.

Пакет Java –это механизм организации пространства имен: ограниченная область, в которой имена уникальны, но вне которой они могут несуществовать. Чтобы определить конструкцию как уникальную, нужно полностью описать ее, указав ее пространство имен.

Пакеты предоставляют такжехороший способ для построения болеесложных приложений из дискретных единиц функциональности.

Определение пакета

Для определения пакета используется ключевоеслово package, за которым следует формальноеимя пакета, заканчивающееся точкой с запятой. Часто имена пакетов разделяются точками и следуют такой схемеде-факто:

package orgType.orgName.appName.compName;

Это определениепакета расшифровывается так:

orgType–это тип организации, такой как com, orgили net.

OrgName–доменноеимя организации, такоекак makotogroup, sunили ibm;

AppName–сокращенноеимя приложения; compName–имя компонента.

Язык Java невынуждает следовать этому соглашению о пакетах. На самом деле, определять пакет вообщенеобязательно, но тогда всеобъекты должны иметь уникальныеимена классов и будут находиться в пакетепо умолчанию. Для более эффективной работы я рекомендую определять всесвои классы Java в пакетах. В данном руководствемы будем соблюдать это соглашение.

www.ibm.com/developerworks/ru/edu/j-introtojava1/section7.html

3/8

02.09.13

Введениев Java-программирование: Часть 1. Основы языкаJava

Операторы импорта

Следующим в определении объекта (возвращаясь к листингу 1) идет оператор import. Он сообщает компилятору Java, где найти классы, на которыессылается код. Любой нетривиальный объект использует другиеобъекты для выполнения тех или иных функций, и оператор импорта позволяет сообщить о них компилятору Java.

Оператор импорта обычно выглядит так:

import ClassNameToImport;

За ключевым словом importследуют класс, который нужно импортировать, и точка с запятой. Имя класса должно быть полным, то есть включать свой пакет.

Чтобы импортировать всеклассы из пакета, послеимени пакета можно поместить .*. Например, следующий оператор импортирует каждый класс пакета com.makotogroup:

import com.makotogroup.*;

Импорт всего пакета может сделать кодменеечитабельным, поэтому я рекомендую импортировать только нужныеклассы.

Eclipse упрощает импорт

При написании кода в редактореEclipseможно ввести имя класса, а затем нажать Ctrl+Shift+O. Eclipseопределяет, какие классы нужно импортировать, и добавляет их автоматически. Если Eclipseнаходит два класса с одним и тем жеименем, он выводит диалоговоеокно с запросом, какой именно класс вы хотитедобавить.

Объявлениекласса

Чтобы определить объект в языкеJava, нужно объявить класс. Класс можно представить в качествешаблона объектов, как формочка для печенья. Класс определяет базовую структуру объекта и во время выполнения программы создает экземпляр этого объекта. Слово объектчасто используется как синоним слова класс. Строго говоря, класс определяет структуру того, что воплощается в объекте.

Листинг 1 содержит следующееобъявлениекласса:

accessSpecifier class ClassName {

accessSpecifier dataType variableName [= initialValue]; accessSpecifier ClassName([argumentList]) {

constructorStatement(s)

}

accessSpecifier returnType methodName([argumentList]) { methodStatement(s)

}

}

Указатель доступа класса accessSpecifierможет принимать разныезначения, но, как правило, это public. Скоро вы столкнетесь с другими значениями accessSpecifier.

Соглашенияоб именах классов

В принципеклассы можно называть как угодно, но по устоявшемуся соглашению используют ГорбатыйРегистр (CamleCase): начинают с прописной буквы, и первую букву каждого слова тожеделают прописной, а всеостальныебуквы ― строчными. Имена классов должны содержать только буквы и цифры. Соблюдениеэтих принципов гарантирует, что ваш кодбудет понятен другим разработчикам, следующим тем жеправилам.

У класса могут быть члены двух типов: переменные и методы.

Переменные

Значения переменных данного класса различны в разных экземплярах этого класса и определяют его состояние. Эти значения часто называют переменными экземпляра. Определениепеременной содержит следующиеэлементы:

accessSpecifier;

www.ibm.com/developerworks/ru/edu/j-introtojava1/section7.html

4/8

02.09.13 Введениев Java-программирование: Часть 1. Основы языкаJava

dataType;

variableName;

а такжеможет содержать initialValue.

Возможныезначения accessSpecifier:

Переменные типа public

Использовать переменныетипа public вообщенерекомендуется, но в крайнередких случаях это может быть необходимо, поэтому такая возможность есть. Платформа Java неограничивает варианты использования, так что вы сами должны соблюдать правила хорошего тона при программировании, дажеесли есть соблазн поступить иначе.

public: переменную видит любой объект любого пакета. (Никогда неиспользуйтеэто значение.);

protected: переменную видит любой объект, определенный в том жепакете, или подкласс (определенный в любом пакете);

без указателя (его ещеназывают доступом для своих или внутрипакетным доступом): переменную видят только объекты, класс которых определен в том жепакете;

private: переменную видит только класс, еесодержащий.

Тип (dataType) переменной зависит от того, что представляет собой переменная –это может быть простой тип или тип другого класса (опять же, поговорим об этом позже).

Имя переменной (variableName) зависит от вас, но по общему соглашению, в именах переменных используется ГорбатыйРегистр, о котором я писал выше, за исключением того, что начинаются они со строчной буквы. (Этот стиль иногда называют lowerCamelCase.)

О значении переменной (initialValue) пока небеспокойтесь; просто имейтев виду, что можно инициализировать экземпляр переменной при ееобъявлении. (В противном случаекомпилятор создаст значениепо умолчанию, котороебудет присваиваться при создании экземпляра класса.)

Пример: определениекласса Person

Преждечем перейти к методам, приведем пример, суммирующий все, что вы усвоили до сих пор. Листинг 2 представляет собой определениекласса Person.

Листинг 2. Определение класса Person

package com.makotogroup.intro;

public class Person { private String name; private int age; private int height; private int weight;

private String eyeColor; private String gender;

}

На данный момент базовоеопределениекласса Personнеочень полезно, поскольку оно определяет лишь его атрибуты (причем частные).

Класс Personстанет интереснее, когда у него появится поведение–то есть методы.

Методы

Методы класса определяют его поведение. Иногда такоеповедение― неболеечем возврат атрибута к текущему значению. В других случаях поведениеможет быть довольно сложным.

Существуют двекатегории методов: конструкторы и всепрочиеметоды –которых множество. Метод-конструктор используется только для создания экземпляра класса. Другиеметоды могут использоваться практически для любого поведения программы.

Возвращаясь к листингу 1, он иллюстрирует способ определения структуры метода, который включает в себя такиевещи, как:

accessSpecifier; returnType;

www.ibm.com/developerworks/ru/edu/j-introtojava1/section7.html

5/8

Соседние файлы в папке java