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

Разработка классов на Java – (3 академ. часов)




Разработка классов на Java – (3 академ. часов)

Вопрос: Что такое класс?

Ответ: Пробежамся по некоторым концепциям ООП:

Понятие «Абстракция»

Вы не сможете написать программу, если будете учитывать всё. Это невозможно. Мы не можем в своих программных моделях описать мир, какой он есть. И вчера не могли, и завтра не сможем. Мы используем абстрагирование, чтобы оставить только то, что нам для решения конкретной задачи нужно. Вы должны изучить решаемую задачу предметной области и оставить только те характеристики, которые нам понадобятся. Все остальное мы выбросили, иначе у нас будут большие проблемы. В противном случае вы будете писать лишнее, лишнее и еще раз лишнее. А в серьезном проекте это что? Это время и деньги. Вы не уложитесь!

Еще одна очень важная концепция и тоже очень простая!

Когда вы пишете свой собственный код, а это будут классы. В классе как минимум будут методы и данные. Мы очень часто хотим что-то спрятать. Пользователи не должны догадываться что внутри программы находится. Что есть у класса?

Private Public
Имя класса («Товар», «Сотрудник», «String») Данные Служебные методы Методы

Основная идея инкапсуляции – это не просто все спрятать и радоваться, что никто этим не может пользоваться. С т. з. безопасности, что никто не навредит, есть маленький плюс. Основной плюс, вы создаете систему, которая с внешним миром контактирует минимальным количеством точек, а значит эту систему будет проще менять. Если вы спрятали имя класса, то вы сможете его всегда менять. Если не спрятали, то все этим пользуются и попробуй измени что-то. И вы говорите: «А давайте перепишем весь код за 10 лет? ». Ага, сейчас все бросим и будем этим заниматься с утра до ночи. Поэтому сегодня, основная тенденция – это написание гибких программ. Вы видели хоть одну программу, которая не выходила бы по версии? Нет таких. А это значит, что у меня должна быть заложена внутри моей архитектуры возможность вносить изменения. Инкапсуляция играет здесь основную роль. Так что нужно прятать всё.

Вопрос: А если я спрятал имя класса, то как им пользоваться?

Ответ: Вы произнесли такое замечательное слово, как «интерфейс». Это тоже специальная концепция, которая позволяет это сделать. Можно спрятать имя класса и мы увидим, как это делается. Но понять, где это хорошо и правильно использовать можно на каких-то больших и сложных примерах. Но мы попытаемся это сделать.

 

В любом случае, возвращаясь к архитектуре, у вас есть техническое задание. Вы берете его. В техническом задании видно, что нужно реализовать 1000 позиций. Ну значит будет 1000 методов (или 1000 действий). Хорошо, 1000 методов? Не вопрос. А куда их вместить в 1 класс или в 1000? Вот здесь мы и видим модульный дизайн. Как мне эти методы нарезать? Если вы посмотрите и почитаете специальную литературу, на сайтах и на форумах, то вы узнаете, что существуют разные подходы и способы, как это все сделать. Но это мегапринцип, который говорит, «ребята, старайтесь делать так, чтобы внутри одного класса все между собой было жестко связано, а между классами наоборот была бы слабая связь».

Обзор основных концепций ООП.

Есть такая концепция «составной сложный объект». Сложный объект может быть получен за счет наследования или агрегирования.

Наследование: У вас может быть написан класс от которого будет наследник «подкласс». В Java главный класс называется « суперкласс », а те кто ниже « подклассы ».

Чтобы создать объект нужно писать new int, new String, new Sotrudnik.

Вопрос: А какие будут созданы объекты, когда я так пишу? А те что выше по иерархии?

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

Агрегирование: Это немного проще. Вот у вас есть например Сотрудник. Объект в памяти! Вы его создали! new Emploee. У него есть какие-то собственные данные? Ну фамилия, имя. А что такое фамилия? Это же будет строка.

Вопрос: Что будет внутри класса Сотрудник?

Ответ: String name, а потом будет положено какое-то значение. Но ведь это поле name. Это всего-лишь навсего ссылка на другой объект где лежит текст фамилии или имени. Если это не простые типы (int, double), это значит ссылочка на объект. И получается, что ваш объект агрегирует внутри себя десятка полтора других объектов. Это тоже сложный составной объект, но который получается путем вложения. А вложенный объект в свою очередь тоже может содержать внутри себя ссылочку на другой объект.

Агрегирование считается гибче и лучше.

Есть только одна ситуация, когда лучше использовать наследование – это полиморфизм.

Глядя на то, что мы сейчас обсудили, что мы хотим создавать иерахии объектов, мы хотим заниматься инкапсуляцией, нам нужно использовать какие-то характеристики, а какие-то выбросить. И возникает вопрос: Хорошо. Мне по каждому поводу придется самому все это писать или можно взять готовое? У нас есть с вами библиотека JDK, в которых включены эти классы. 20 лет платформа Java развивается. Там классов для вас написано немеренно. Вопрос: Там есть класс Employee, Goods? Ответ: Нет. Им что? Было влом написать класс Employee?

Ответ: Разработчики: «А давайте сделаем для людей класс «Сотрудник»? » И тогда она должны будут взять весь мир, все страны и посмотреть какие для всего мира нужны характеристики. Возможно она и потянут такую работу, но тогда получится сотрудник с таким количеством характеристик. Вы только посмотрите и скажете, «Ребята, да мне из этих 300 характистик нужны только 10». А весь все эти характеристики будут кушать память. Зачем вам такое? Такое никому не нужно. Поэтому в библиотеке из предметных бизнес областей никаких классов вы не найдете вообще.  

И тогда возникает вопрос: А чтоже там тогда есть-то? 10-ки тысяч классов, а для нашей сферы нет ничего.

Ответ: Есть то, что не требует каких-то ньансов. Допустим, пользовательский интерфейс, работа с данными, работа с СУБД, работа с сетью, работа с данными. То, что делается стандартно. Работа с XML. Это стандартная задача. Она решена и значит это можно положить в библиотеку. Поэтому очень часто для нашей задачи мы говорим, «Так, отлично! У нас есть классы из библиотеки, а еще нам нужно пяток насать своих». И вот, чтобы это сделать, мы должны будем использовать возможность ООЯП по разработке своих пользовательских типов данных.

Поделиться:





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



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