Ответы на контрольные вопросы по лекции 7
.docxОтветы на контрольные вопросы по лекции 7
Дисциплина: объектно-ориентированное программирование
Студент: Заболотников М.Е.
Группа: 9373
Что из себя представляет механизм сигнал-слот среды разработки объектно-ориентированных приложений Qt?
Это механизм, позволяющий соединить вместе объекты, не связанные друг с другом. Каждый унаследованный от QObject класс способен высылать и получать сигналы.
Какими преимуществами обладает применение механизма сигнал-слот?
Применение механизма сигнал-слот обладает следующими преимуществами:
каждый класс, унаследованный от QObject, может иметь любое количество сигналов и слотов;
сообщения, посылаемые посредством сигналов, могут иметь множество аргументов любого типа;
сигнал можно соединять с различным количеством слотов. Высылаемый сигнал, в этом случае, поступит ко всем подсоединенным слотам;
слот может принимать сообщения от многих сигналов, принадлежащих разным объектам;
соединение сигналов и слотов можно производить в любой точке приложения;
сигналы и слоты являются механизмами, обеспечивающими связь между объектами. Более того, эта связь может выполняться между объектами, которые находятся в различных потоках в мультипоточных приложениях;
при уничтожении объекта происходит автоматическое разъединение со всеми сигнально-слотовыми связями. Это гарантирует, что сигналы не будут высылаться к несуществующим объектам.
Какие недостатки связаны с применением сигналов и слотов?
сигналы и слоты не являются частью языка C++, поэтому требуется запуск дополнительного препроцессора перед компиляцией программы;
отсылка сигналов немного медленнее, чем обычный вызов функции, который производится при использовании механизма функций обратного вызова;
существует необходимость в наследовании класса QObject;
в процессе компиляции не производится никаких проверок: имеется ли сигнал или слот в соответствующих классах или нет; совместимы ли сигнал и слот друг с другом и могут ли они быть соединены вместе. Об ошибке можно будет узнать лишь тогда, когда приложение будет запущено. Вся эта информация выводится на консоль, поэтому, для того чтобы увидеть ее в Windows, в проектном файле необходимо добавить в секции config опцию console (для Linux никаких дополнительных изменений проектного файла не требуется).
Что такое слот и сигнал? Для чего делаются их соединения?
Сигнал – это метод, который в состоянии производить высылку сообщений. Соединяемые объекты могут быть абсолютно независимы и реализованы отдельно друг от друга. Это позволяет объекту, высылающему сигналы, не беспокоиться о том, что впоследствии будет происходить с этими сигналами. Объект, высылающий сигналы, может даже и не догадываться, что их принимают и обрабатывают другие объекты. Благодаря такому разделению, можно разбить большой проект на компоненты, которые будут разрабатываться разными программистами в отдельности, а потом соединяться при помощи сигналов и слотов вместе. Это делает код очень гибким и легко расширяемым, если вдруг один из компонентов устареет или должен будет реализован иначе, то все другие компоненты, участвующие в коммуникации с этим компонентом и сам проект, в целом, не изменятся. Новый компонент после разработки встанет на место старого и будет подключен к основной программе при помощи тех же самых сигналов и слотов.
Что такое константные атрибуты и методы класса? Могут ли разные объекты иметь разные значения константных атрибутов?
Константный атрибут (свойство) класса – атрибут, который не изменяет своего значения на всем жизненном цикле существования объекта класса. Константный метод класса – это метод, который будучи примененным к объекту класса не может изменить значение ни одного его атрибута. Разные объекты могут иметь разные значения константных атрибутов.
Что такое статические атрибуты и методы класса? Почему статические методы могут использовать только статические атрибуты?
Статический атрибут класса – это атрибут, который принимает в каждый момент времени жизненного цикла работы программы одинаковое значение для всех объектов класса, существующих в данный момент. Статический метод класса – это метод, использующий в своей реализации только статические атрибуты класса. Статические методы могут использовать только статические атрибуты потому, что статические атрибуты класса не зависят от объектов класса и эти методы не могут применяться к объектам класса.
Можно ли применять статические методы к объектам класса?
Нет, нельзя.