Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Класс Object. Класс Object определяет методы, которые доступны в любом объекте. toString() и equals(). Метод toString. -name : String




Класс Object

В Java определен один специальный класс — Object. Все остальные классы являются подклассами этого класса. То есть Object — суперкласс всех остальных классов. Это означает, что ссылочная переменная типа Object может ссылаться на объект любого другого класса. Кроме того, поскольку массивы реализованы в виде классов, переменная типа Object может ссылаться также на любой массив.

Класс Object определяет методы, которые доступны в любом объекте.

public class Employee { }

эквивалентно:

public class Enployee extends Object { }

В этом классе есть много полезных методов, рассмотрим для начала два:

toString() и equals().

 

Метод toString

Этот метод служит для представления объекта в виде строки. Это требуется, например, если мы хотим вывести объект на экран.

Самое главное знать, что метод toString() есть у всех объектов и все объекты используют этот метод при работе со строками. По-умолчанию он состоит из двух составляющих разделенных собачкой. Эти составляющие: имя_класса_объекта и хэш_код.

Пример: java. lang. Integer; @24d200d8. Теперь посмотрим, как это работает.

Простейшая UML-диаграмма для приведенного ниже класса USER:

 

 User
Здесь размещаются атрибуты

-name: String

-surname: String

-birthdYear: int

Здесь размещаются методы
+getName(): String

+getSurname(): String

+getBirthdYear(): int

+setName(n: String)

+setSurname( s: String)

+setBirthdYear( y: int)

+toString (): String

Согласно этой диаграмме разработан класс:

class User {

private String name;

private String surname;

private int birthYear;

User(String name, String surname, int birthYear)

{

   this. name = name;

   this. surname = surname;

   this. birthYear = birthYear;

}

 …

@Override

public String toString()

{

  return this. name+" " +this. surname+", " +getAge()+" года";

}

 }                         

2. 3. 1. Задание:

Ваша задача дописать недостающие методы и протестировать класс User.

 

2. 4. Наследование и реализация полиморфизма в Java

2. 4. 1. Теоретическая часть

 

Проектирование структуры классов

 

Итак, мы оставляем открытыми только методы, необходимые для взаимодействия объектов. При этом удобно спланировать классы так, чтобы зависимость между ними была наименьшей, как принято говорить в теории ООП, было наименьшее зацепление (low coupling) между классами. Тогда структура программы сильно упрощается. Кроме того, такие классы удобно использовать как строительные блоки для создания других программ.

Напротив, члены класса должны активно взаимодействовать друг с другом, как говорят, иметь тесную функциональную связность (high cohesion). Для этого в класс следует включать все методы, описывающие поведение моделируемого объекта, и только такие методы, ничего лишнего. Одно из правил достижения сильной функциональной связности, введенное Карлом Либерхером (Karl J. Lieberherr), получило название закона Деметра. Закон гласит: " В методе m() класса А следует использовать только методы класса А, методы классов, к которым принадлежат параметры метода m(), и методы классов, экземпляры которых создаются внутри метода m() ".

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

 

Одну и ту же задачу можно построить по-разному:

ВАРИАНТ 1:

public class BoxDemo {

 

/**

* @param args the command line arguments

*/

private double width;

private double height;

private double depth;

BoxDemo(double w, double h, double d)

{height=h; depth=d; }

private double volume()   

{ return width*height*depth;  

}

 

public static void main(String[] args) {

BoxDemo mb1=new BoxDemo(1, 2, 3);

BoxDemo mb2=new BoxDemo(4, 5, 6);

double vol;

vol=mb1. volume();

     

System. out. println(" Объем1 равен " +vol);

     

vol=mb2. volume();

System. out. println(" Объем2 равен " +vol);

}

}

ВАРИАНТ 2:

class Box

{ private double width;

private double height;

private double depth;

Box(double w, double h, double d)

{height=h; depth=d; }

public double volume()

{ return width*height*depth;  

}

}

public class BoxDemo {

 

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

Box mb1=new Box(1, 2, 3);

Box mb2=new Box(4, 5, 6);

double vol;

vol=mb1. volume();

     

System. out. println(" Объем1 равен " +vol);

     

vol=mb2. volume();

System. out. println(" Объем2 равен " +vol);

}

 

Наследование является неотъемлемой частью Java. При использовании наследования вы говорите: Этот новый класс похож на тот старый класс. В коде это пишется как extends, после которого указываете имя базового класса. Тем самым вы получаете доступ ко всем полям и методам базового класса. Используя наследование, можно создать общий класс, которые определяет характеристики, общие для набора связанных элементов. Затем вы можете наследоваться от него и создать новый класс, который будет иметь свои уникальные характеристики. Главный наследуемый класс в Java называют суперклассом. Наследующий класс называют подклассом. Получается, что подкласс - это специализированная версия суперкласса, которая наследует все члены суперкласса и добавляет свои собственные уникальные элементы.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...