Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Теоретический материал. Класс – это нечто вроде типа данных, определяемого программистом




Класс – это нечто вроде типа данных, определяемого программистом. Однако, в отличии от обычного типа данных, класс может содержать много данных (переменных) различного типа, а также подпрограммы для их обработки. Переменные входящие в класс, называются его свойствами или полями, а подпрограммы – методами.

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

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

Каждое поле и каждый метод класса, имеет один из 3х уровней приватности:

· Public – поле или метод доступны снаружи класса;

· Protected – поле или метод доступны только в самом классе, либо в классах наследующих его;

· Private – поле или метод доступны лишь внутри класса.

По умолчанию, уровень приватности в классе установлен на private.

Наследование – это получение одним классом, всех свойств и методов другого класса. Оно так же бывает трёх уровней приватности. При публичном наследовании, уровень приватности всех полей и методов класса переходит в класс наследника без изменений. При защищённом наследовании, приватность в наследуемых полях и методах повышается на один уровень. При приватном наследовании, он повышается на два уровня, и таким образом, все унаследованные поля и методы становятся приватными, не зависимо от того, какой уровень приватности был установлен для них в родном классе.

В абсолютном большинстве случаев используется публичный уровень приватности.

У классов бывает два типа спец. подпрограмм – конструкторы и деструкторы. Это подпрограммы запуска-ющиеся автоматически: при создании экземпляра и при его уничтожении соответственно. Оба эти типа подпрограмм обязательно должны быть публичными. Они не имеют типа и носят название аналогичное классу. Различаются между собой тем, что название деструктора начинается со спецзнака тильда (~).

Кроме классов, существуют так же структуры, они выполняют схожие функции. Все возможности имеющиеся у классов, имеются так же и у структур. Единственная разница между ними состоит в том, что у структуры уровень приватности по умолчанию установлен на public. Однако по негласной договорённости, структуры используются только тогда, когда программисту нужны лишь поля и не нужны методы. Т.е. обычно структуры не содержат подпрограмм, хотя и могут содержать их.

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

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

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

Вся сложность заключается в том, что в отличии от массивов всех видов, у списка нету ни собственного имени, по которому к нему можно было бы обратиться, ни номеров элементов, по которому их можно было бы выбрать. Всё что есть у списка – это указатели на него. Таким образом, привычная схема имя_массива [номер_элемента] неприменима. И т.к. невозможно создать указатель на каждый из его элементов (ну хотя бы потому, что заранее неизвестно, сколько именно элементов в нём будет), невозможно обратиться к нужному элементу напрямую, для его поиска придётся просмотреть весь список.


 

Так как же реализуется список? Для начала нужно определиться с одним его элементом. Раз мы хотим поместить в него данные разного типа, единственное что может так сделать – это класс, а вернее, т.к. подпрограммы нам не нужны, воспользуемся структурой.

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

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

Доступ к отдельным элементам списка осуществляется с помощью указателя, а доступ к конкретным его полям, с помощью нового элемента управления – стрелки (которая получается из двух значков: “-“ и “>”). Т.е. если p – это наш указатель на элемент, а pole – это поле, к которому мы хотим обратиться, запись будет выглядеть следующим образом: p -> pole.

 


 

Задание:

1. Создать класс «Компьютер», содержащий поля с частотой процессора, количеством ОЗУ и размером HDD. И создать два наследующего его класс – «PC» и «Планшет». Первый должен содержать поля с операционной системой (на выбор DOS, Windows и Linux), видеокартой и количеством USB-портов; второй – операционную систему (на выбор Android, iOS или Windows), диагональ дисплея (7”-12”) и его разрешение. Реализовать заполнение этих полей любым способом, но через конструкторы.

2. Организовать два списка, один для PC, другой для планшетов. Запросить пользователя количество элементов в каждом списке. Создать эти списки заполнив их.

3. Реализовать меню, позволяющее добавлять элементы в любой из списков, выводить на экран списки целиком или только выбранный элемент.

4. Написать отчёт.

 

Отчёт должен содержать: титульный лист (образец в конце методички), код программы и ответы на вопросы со следующей страницы.


 

Вопросы на защиту:

Что такое списки, для чего они нужны?

Ответ: ____________________________________________
__________________________________________________
__________________________________________________

Какие типы списков Вы знаете? В чем между ними разница?

Ответ: ____________________________________________
__________________________________________________
__________________________________________________

В чём отличие списков от массивов?

Ответ: ____________________________________________
__________________________________________________
__________________________________________________

В больших программах следует избегать использования списков или стремиться к нему? Почему?

Ответ: ____________________________________________
__________________________________________________
__________________________________________________

 

Работу написал Работу проверил

ДОДАТОК А

Зразки титульних листів

 

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ХАРКІВСЬКИЙ КОМП¢ЮТЕРНО-ТЕХНОЛОГІЧНИЙ

КОЛЕДЖ НТУ «ХПІ»

 

ЖУРНАЛ

ЛАБОРАТОРНИХ РОБІТ

 

з дисципліни

«Основи програмування та алгоритмічні мови»

 

 

Виконав Перевірив

студент гр._____ викладач

________________ _______________

 

 

Харків 201_

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ХАРКІВСЬКИЙ КОМП¢ЮТЕРНО-ТЕХНОЛОГІЧНИЙ

КОЛЕДЖ НТУ «ХПІ»

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных