Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Чорноморський державний університет

Поиск

Імені Петра Могили

Факультет комп'ютерних наук

Кафедра інтелектуальних інформаційних систем

Методичний посібник до лабороторних робіт з курсу

Об’єктно-орієнтование програмування ч.2

(Java SE 1.6)

 

 

для освітніх напрямків підготовки бакалаврів

050101- Комп'ютерні науки

050102- Комп'ютерна інженерія

 

Укладач:

Ю.О. Нездолій

 

 

м. Миколаїв - 2010

Методическое пособие к выполнению лабораторных работ.

Вступительная часть.

Целью данного пособия являтся оказание помощи слушателям курса Объектно-ориентированное программирование ч.2(Java SE 1.6) в получении практических навыков в написании программ на языке программирования Java. Описание теоретических основ

Общие требования к оформлению и выполнению работ.

- лабораторная работа должна быть оформлена в электронном виде в полном соответствии с требованиями учебного заведения к оформлению такого вида работ. Все материалы должны находиться в директории с именем GGG_LL_VV_прізвище студента, где LL-номер лабороторной, GGG- номер группы,VV-номер варианта

и заархивированы в архив LL_GGG_прізвище.rar Материалы должны содержать краткую пояснительную записку не более чем на 3 листах (размер шрифта 10) с описанием задания и его реализации если это необходимо. К пояснительной записке прилагается проект, реализованный в среде NetBeans 6.9 и выше,компилирующийся и запускающийся без ошибок, в котором реализованы все задания лабороторной работы.

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

 

Краткое изложение теоретических основ, необходимых для выполнения лабораторных работ.

Программа, написанная на Java представляет собой набор экземпляров классов, взаимодействующих между собой. Рассмотрим на модели отношений реальных объектов(=Человек=,= Студент=, =Учащийся=,=Студент, занимающийся спортом=) некоторые элементы ООП.Ниже приведен код простого класса Человек на Java:

1. Листинг:

1.1. package javaapplication38;

1.2. import java.util.Date;

1.3. /*

1.4. це

1.5. складний

1.6. коментар

1.7. */

1.8.

1.9. public class Human {

1.10. String fio; // це простий коментар

1.11. private int age; //это свойство =возраст= каждого экземпляра класса Human

1.12. private String adress="адреса не визначена"; //это свойство =адрес= каждого экземпляра класса Human

1.13. private Date birthday=new Date(); //это свойство =день рождения= каждого экземпляра класса Human

1.14. private String inn="11111111111"; //это свойство =идентификационный код=

1.15.

1.16. public Human() { // это конструктор по умолчанию

1.17.

1.18.

1.19. } // вот здесь он закончился

1.20.

1.21. public Human(String fio1, int age2, String adress3, Date birthday56,String inn_3) { // это еще один конструктор

1.22. this.fio = fio1;

1.23. this.age = age2;

1.24. this.adress = adress3;

1.25. this.birthday = birthday56;

1.26. this.inn=inn_3;

1.27. }

1.28.

1.29. public Human(String fio) { // и это конструктор

1.30. this.fio = fio;

1.31. }

1.32. public String getAdress() {

1.33. return adress;

1.34. }

1.35. public void setAdress(String adress) {

1.36. this.adress = adress;

1.37. }

1.38.

1.39. public static void main(String[] args) {// метод класса Human

1.40. Human hum1=new Human("Петров Іван Сергійович");// создание экземпляра класса Human

1.41. Human hum2=new Human("Іванова Оксана Володимирівна");// создание экземпляра класса Human

1.42. System.out.println(hum1); // вывод на консоль информации по экз. hum1 класса Human

1.43. System.out.println(hum2); // вывод на консоль информации по экз. hum2 класса Human

1.44. hum1.setAdress("м. Миколаїв, вул. Мархлевського 34, кв.56");// вызов метода для hum1 по замене адреса

1.45. System.out.println(hum1); // вывод информации по экз. hum1 класса Human после коррект. адреса

1.46. }

1.47.

1.48. public String toString(){ // метод класса Human

1.49. return "Це екземпляр класу Human зі слідуючими властивостями -\n"

1.50. +"Прізвище- "+this.fio+"\nАдреса - "+this.adress+

1.51. "\nДата народження-" +this.birthday.toString()+"\n\n";

1.52. }

1.53. public static int sum1(int var1,int var2){

1.54. return (var1+var2);

1.55. }

1.56. }

 

 

Если этот код запустить на выполнение, то мы увидим в окне вывода следующие строки-

 

Це екземпляр класу Human зі слідуючими властивостями -

Прізвище- Петров Іван Сергійович

Адреса - адреса не визначена

Дата народження-Thu Dec 23 06:17:06 EET 2010

 

Це екземпляр класу Human зі слідуючими властивостями -

Прізвище- Іванова Оксана Володимірівна

Адреса - адреса не визначена

Дата народження-Thu Dec 23 06:17:06 EET 2010

 

Це екземпляр класу Human зі слідуючими властивостями -

Прізвище- Петров Іван Сергійович

Адреса - м. Миколаїв, вул. Мархлевського 34, кв.56

Дата народження-Thu Dec 23 06:17:06 EET 2010

 

Весь приведенный код находиться в файле Human.java. В файле может быть объявлено несколько классов, но только один из них может иметь модификатор доступа public. Название файла должно совпадать с названием этого public- класса. В этом классе вы можете увидеть метод main, в качестве параметров этого метода выступает массив данных типа String, массив называется args(строка 1.39). Данный метод имеет особое назначение в классах Java. Он не является обязательным для класса, но если мы хотим чтобы класс запускался на исполнение –этот метод обязателен и формат его объявления должен быть всегда следующим =public static void main(String[] args)=(по ключевым словам в строке объявления поговорим позже). На самом деле, когда мы выполняем в терминале команду =java Human Петров = выполняется эквивалентная ей команда =java Human.main Петров =, при этом =Петров= является параметром, который записывается в массив args(строка 1.39) и передается в метод main. Конкретно в этом случае, первый элемент массива args[0] будет равен “ Петров”(нумерация элементов массива ведется с 0-индекса).

Структура класса

 

На выше приведенном примере класса рассмотрим основные элементы структуры класса Java.

Объявление класса начинается со строки, в которой присутствует ключевое слово class и название класса. Java- регистрозависимый язык, поэтому классы с названиями Human и HuMan – это разные классы. Тело класса, все его структурные части заключены между фигурными скобками {}(строки 1.9,1.54). Обычно над объявлениями класса размещается информация о необходимых импортах и пакетах(информацию о пакетах см. ниже). В теле класса возможны следующие структурные элементы:

атрибуты класса (их иногда называют полями или свойствами класса). Их полным набором будет обладать любой экземпляр данного класса. В случае Human, каждый экземпляр этого класса будет иметь следующие свойства - фамилию, возраст, адрес проживания, день рождения, идентификационный код. Пример атрибутов- строки 1.10-1.14 Свойства класса должны отражать реальные свойства объектов моделируемой системы. Объявление атрибута класса ничем не отличается от обычной переменной- первоначально указывается модификатор доступа(в случае отсутствия его явного задания уровень доступа к свойству – дефаултовый (па-кетный)). Далее указывается тип данных, которые будут хранится в переменной.Затем указывается идентификатор или другими словами имя атрибута класса. В Java идентификаторы могут содержать буквы и цифрры(подчеркивание и $ разрешены), длина не ограничена. Имена атрибутов должны отражать их связь со свойствами реальных объектов. Пример:

строка 1.11 - private int age;, где private- модификатор доступа, int- тип данных, которые будут храниться в атрибуте с именем age.

 

конструкторы класса -это структурный элемент, отвечающий за правильность процедуры создания экземпляров класса. Обычно в конструкторах производят корректную инициализацию свойств создаваемых экземпляров. Количество конструкторов в классе не ограничено. Конструктор без параметров называют конструктором по умолчанию. Он создается автоматически, даже если не задан явно программистом, но только в случае, если в классе программист не создал ни одного конструктора. Если у нас есть хотя бы один конструктор, и есть необходимость в конструкторе без параметров, то мы должны его задать в коде самостоятельно. Особенности задания – конструктор всегда называется точно так же как сам класс. Использование при описании класса нескольких конструкторов с различными параметрами называется перегрузкой конструкторов. Пример – строка 1.21, 1.29, 1.16. При создании экземпляра класса (с использованием оператора new строка 1.40, 1.41) мы можем использовать только те конструкторы, параметры которых соответствуют, описанным в классе. Пример - я не могу,например, создать экземпляр класса Human командой = Human h123=new Human(23,45,”Сидоров”) =, т. к. у нас в описании класса нет ни одного конструктора с данной последовательностью и типом параметров – int, int, String.

Инициализаторы или блоки статической инициализации – их пока не рассматриваем.

Методы класса – в этой части сосредоточено поведение класса, то что каждый экземпляр класса умеет делать для других (внешний интерфейс) и то, что он делает для поддержания своей внутренней целостности и непротиворечивости(внутренний интерфейс). В рассматриваемом классе Human описаны следующие методы- getAdress() -1.32, setAdress(String adress)-1.35, main(String[] args) -1.39, toString() – 1.48 Они все относятся к внешнему интерфейсу класса т.к. имеют модификатор доступа public.

Остановимься чуть подробнее на синтаксисе объявления методов. Введем понятие сигнатуры метода- это совокупность имени метода, типов и количества параметров, а так же порядка параметров в описании метода. Понятие сигнатуры важно по причине того, что в классе не могут быть два метода с одинаковой сигнатурой. Это контролирует компилятор. Пример – компилятор не разрешит создание в одном классе методов one(String str, int var1) и one(String qwe, int sde) (докажите, что сигнатуры этих методов одинаковы), но разрешит создание методов one(String str1, int var1, Date d1), one(String str1,int var1) и one(Date d1,String str1,int var1) (докажите что сигнатуры методов различны для этих 3 методов). Наличие в классе нескольких методов с одинаковыми именами называется перегрузкой методов. Отдельная группа методов – это так называемые set-еры и get-еры. Это специлизированные методы, которые предназначены для считывания (get-еры) и модификации (set-еры) атрибутов класса. При этом атрибуты класса делают скрытыми от внешних клиентов (уровень доступа private).Доступ к этим атрибутам класса предоставляется через public- методы, пример getAdress() -1.32, setAdress(String adress)-1.35

Обратите внимание на параметр в описании модифицирующего метода – в этом методе в качестве параметра передается значение, которое необходимо присвоить атрибуту adress.

Порядок объявления метода следующий- модификатор доступа, тип возвращаемого значения, наименование метода и в скобках через запятую список параметров метода, с указанием типа и названия параметров.

Пример:

Строка 1.35 public void setAdress(String adress), где public – модификатор доступа, void – тип возвращаемого значения(void обозначает, что метод ничего не возвращает), setAdress(String adress) – название метода, в качестве параметра используется любая переменная, тип которой String.

 



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 137; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.213.36 (0.011 с.)