The 1st part of the 3rd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 2-nd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 1-st lecture from the course "Java Core".
Chair of Information Net Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 3rd part of the 3rd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
1) The production diary details editing techniques learned throughout the process such as overlapping shots and changing opacity levels.
2) Group members each had their own editing tasks but learned from observing one another, such as how to place text over a shot or put video inside text.
3) After reviewing a first draft, the group agreed more lip syncing shots were needed to meet their aim of using varied shot types in the music video.
The 1st part of the 3rd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 2-nd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 1-st lecture from the course "Java Core".
Chair of Information Net Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 3rd part of the 3rd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
1) The production diary details editing techniques learned throughout the process such as overlapping shots and changing opacity levels.
2) Group members each had their own editing tasks but learned from observing one another, such as how to place text over a shot or put video inside text.
3) After reviewing a first draft, the group agreed more lip syncing shots were needed to meet their aim of using varied shot types in the music video.
The document discusses creating a public image for a new artist through makeup tutorials and lyric analysis. Two makeup tutorials were found that portray the fun, party side of the artist and her innocent side. A lyric analysis revealed the song is about not wanting to be taken advantage of by a boy and wanting to get to know him first, showing she is classy but just wants to have fun. This informs how the artist should be portrayed as classy, young and fun through her hair, makeup and costumes.
El documento describe los tres niveles de prevención en salud: la prevención primaria busca evitar la aparición de enfermedades mediante la promoción de la salud y protección; la prevención secundaria implica el diagnóstico temprano y tratamiento oportuno para evitar la progresión de enfermedades; y la prevención terciaria incluye acciones para reducir la invalidez y secuelas en caso de enfermedad. Además, señala que las estrategias de salud pública se enfocan en lograr y
Brochure – Massey University Business SchoolRick Petford
The document provides information about the business solutions offered by Massey Business School. It discusses how Massey Business School can help businesses with talent development, leadership programs, business insights through data analytics, strategy support, research and innovation partnerships, and start-up development. Specific programs and services are described, such as the Master of Analytics (Business) for transforming big data, strategy planning workshops, research collaborations, and the ecentre business incubator for start-ups. Client testimonials and examples of partnerships with companies like McDonald's are also mentioned.
This document discusses the production diary for a music video. It outlines the storyboard created to plan shots, a release form submitted to the school to film in London, and locations selected for filming in London including Camden and Regent's Park which are within walking distance of each other. The production is looking positive if the London filming is as successful as earlier filming at the beach.
The document discusses the production diary for a music video. It outlines codes and conventions that will be used to portray the dance genre, including camera shots, editing techniques, locations, costumes, and color. Typography will be used with lyrics popping up on screen. Binary oppositions of beach and London locations will show the artist having fun anywhere. Representation is important to portray the artist as fun, youthful, and outgoing, shown through locations, makeup, costumes, and potentially colorfully smoking cigarettes.
Trademark registration is the only way to legally own exclusive rights to a brand, company, or product name. Without registration, others can use your name even for similar goods and services, and you may be guilty of infringement if sued. You also risk losing your brand if someone else registers it first. Registration protects your brand and makes your business more valuable if you want to sell or expand in the future. While the process can be slow, registration is not too expensive considering it provides 10 years of exclusive use rights that can be renewed indefinitely.
El documento habla sobre el impacto de la biotecnología en la sociedad, la alimentación y el ambiente. Explora cómo la biotecnología puede ayudar a crear alimentos y combustibles más sustentables, así como nuevas técnicas para proteger el medio ambiente. También discute algunas implicaciones éticas y legales de la manipulación genética.
The document discusses research conducted to identify the target audience for a music video, including creating a presentation on the audience's demographics and interests. A questionnaire was distributed to better understand the audience, gathering information on their music preferences and what they would like to see in a video. The responses were analyzed and provided insight into the audience. A focus group then provided feedback on initial video ideas, offering suggestions on locations and the artist's name. The focus group discussion helped refine the plans for the music video.
Time Out - A beginners guide to meditation for self careAndrea Fortuin
This document provides an introduction to meditation for beginners. It defines meditation, discusses who should meditate and why. It offers tips on when and where to meditate, and describes various meditation techniques including breathing, mantra, gazing, sound, and mindfulness meditation. The document emphasizes developing a regular meditation practice and notes that it may take time to overcome challenges like a busy "monkey mind." It encourages experimenting to find techniques that work best for the individual.
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4 Dima Dzuba
Описываются возможности C++ по работе с наследованием (virtual, override, final). Описываются механизмы работы с константными переменными и методами (const, mutable, constexpr). Описываются возможности по перегрузке операторов (operator).
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
На примере некоторых архитектурных решений Крипты Дмитрий расскажет о способах реализации полиморфного поведения в программах на C++, о преимуществах и недостатках этих способов, а также о новых возможностях C++11.
Статический анализ кода: Что? Как? Зачем?Andrey Karpov
Методология статического анализа год за годом зарекомендовывает себя в поисках дефектов в исходном коде программ.
Максим расскажет про:
- методологию статического анализа и какие плюсы и минусы у нее есть;
- технологии этой методологии, которые позволяют выявлять разнообразнейшие дефекты в коде;
- интересные примеры ошибок в реальных проектах, которые были найдены при помощи статического анализа;
- интеграцию инструментов статического анализа в проекты любой сложности, и почему так важно регулярное использование подобных инструментов.
Как можно применить аспектно ориентированное программирование к шаблонам проектирования. Какие из них становится легче использовать? Какие полностью выносятся в шаблон и больше не являются частью вашей бизнес-логики.
Как создать более чистый код?
- на эти вопросы ответ в презентации.
Использование аспектов в реализации PostSharp к рефакторингу кода, к шаблонам банды четырех.
Большую часть инфраструктурного кода можно выделить и переиспользовать в других проектах.
1. Модуль 3: Основные понятия объектно-ориентированного
программирования.
Темы лекции: Полиморфизм.
Практическое задание: Полиморфизм.
Тренер: Игорь Шкулипа, к.т.н.
C++ Базовый. Занятие 11
3. http://www.slideshare.net/IgorShkulipa 3
const_cast
Оператор const_cast позволяет убрать или добавить
константность
const ClassA * constA = {/*инициализатор*/};
ClassA * A = const_cast<ClassA *>(constA);
const_cast не применим для тех объектов, которые объявлены
как const. В таком случае нельзя отменять константность, так
как будет undefined behaviour.
4. http://www.slideshare.net/IgorShkulipa 4
reinterpret_cast
Оператор reinterpret_cast приводит друг к другу указатели,
которые друг от друга не зависят, не меняя константности
ClassA * p = new ClassA();
double * d = reinterpret_cast<double*>(p);
Оператор reinterpret_cast является машинно-зависимым. Чтобы
безопасно использовать оператор reinterpret_cast, следует
хорошо понимать, как именно реализованы используемые
типы, а также то, как компилятор осуществляет приведение
5. http://www.slideshare.net/IgorShkulipa 5
static_cast
Оператор static_cast выполняет преобразование между
связанными значениями. Связанность проверяется на этапе
компиляции, поэтому и называется static.
//Класс Derived является наследником Base
Derived * der = ...;
Base * bas = static_cast<Base *>(der);
der = static_cast<Derived *>(bas);
Типы, к котрым применим static_cast:
⚫ числовые типы
⚫ классы, связанные наследованием
⚫ приведение к void*
6. http://www.slideshare.net/IgorShkulipa 6
dynamic_cast
Безопасное приведение по иерархии наследования.
dynamic_cast<Derived *>(base_pointer)
Используется RTTI (Runtime Type Information), чтобы привести
один указатель на объект класса к другому указателю на
объект класса.
Классы должны быть полиморфными, то есть в базовом классе
должна быть хотя бы одна виртуальная функция. Если это
условие не соблюдено, ошибка возникнет на этапе
компиляции. Если приведение невозможно, то об этом станет
ясно только на этапе выполнения программы и будет
возвращен NULL.
7. http://www.slideshare.net/IgorShkulipa 7
Полиморфизм
Полиморфизм - это свойство, которое позволяет одно и то же
имя использовать для решения нескольких схожих, но
технически разных задач. Целью полиморфизма является
использование одного имени для задания общих для класса
действий.
Использование полиморфизма достигается при присвоении
указателю на базовый класс адреса производного класса с
переопределенными методами.
Типы-наследники неявно приводимы к базовому классу.
8. http://www.slideshare.net/IgorShkulipa 8
Пример
class Point
{
private: double _x, _y;
...
}
class Figure
{
protected: Point _center;
public: double GetArea(){return 0;};
}
class Circle: public Figure
{
private: double _radius;
...
public: double GetArea(){return 3.14*_radius*_radius;};
}
class Rectangle: public Figure
{
private: double _width, _height;
...
public: double GetArea(){return _width*_height;};
}
Figure
Circle Rectangle
10. http://www.slideshare.net/IgorShkulipa 10
Результат 2
void PrintArea(const Figure& figure)
{
cout << figure.GetArea() <<
"n";
}
void main()
{
Circle circle(10);
Rectangle rectangle(10, 20);
PrintShapeArea(circle);
PrintShapeArea(rectangle);
return 0;
}
Результат:
>0
>0
В данной ситуации при выборе вызываемых
методов компилятор руководствуется типом
ссылки.
В этом случае происходит вызов методов
класса Shape, так как функция PrintArea
принимает ссылку данного типа.
11. http://www.slideshare.net/IgorShkulipa 11
Виртуальные методы
Метод класса может быть объявлен виртуальным, если
допускается его альтернативная реализация в порожденном
классе.
При вызове виртуальной функции через указатель или ссылку на
объект базового класса будет вызвана реализация данной
функции, специфичная для фактического типа объекта.
Виртуальные функции обозначаются в объявлении класса при
помощи ключевого слова virtual.
Виртуальные функции позволяют использовать полиморфизм.
Полиморфизм позволяет осуществлять работу с разными
реализациями через один и тот же интерфейс.
12. http://www.slideshare.net/IgorShkulipa 12
Пример
class Figure
{
protected: Point _center;
public:
virtual double GetArea(){return 0;};
}
class Circle: public Figure
{
private: double _radius;
...
public:
virtual double GetArea(){return 3.14*_radius*_radius;};
}
class Rectangle: public Figure
{
private: double _width, _height;
...
public:
virtual double GetArea(){return _width*_height;};
}
13. http://www.slideshare.net/IgorShkulipa 13
Результат
void PrintArea(const Figure& figure)
{
cout << figure.GetArea() <<
"n";
}
void main()
{
Circle circle(10);
Rectangle rectangle(10, 20);
PrintShapeArea(circle);
PrintShapeArea(rectangle);
return 0;
}
Результат:
>314
>200
В данной ситуации при выборе вызываемых
методов компилятор руководствуется
таблицей виртуальных методов (VMT).
В этом случае происходит вызов методов
классов Circle и Rectangle, так как они
объявлены виртуальными.
14. http://www.slideshare.net/IgorShkulipa 14
Особенности виртуальных методов
В C++ методы, объявленные в базовом классе виртуальными,
остаются виртуальными в классах-потомках.
Использовать слово virtual в классах наследниках не
обязательно (хотя и желательно для лучшего понимания кода).
В C++ виртуальные функции не являются виртуальными, если
они вызваны в конструкторе или деструкторе данного класса.
15. http://www.slideshare.net/IgorShkulipa 15
Виртуальный деструктор
Деструктор класса, имеющего наследников, всегда должен явно
объявляться виртуальным.
Это обеспечивает корректный вызов деструктора нужного класса
при вызове оператора delete с указателем на базовый класс.
Деструктор, не объявленный явно виртуальным, а также
автоматически сгенерированный деструктор является не
виртуальным.
Классы без виртуальных деструкторов не предназначены для
расширения.
Классы стандартных коллекций STL (строки, векторы) не имеют
виртуальных деструкторов, поэтому наследоваться от них нельзя.
16. http://www.slideshare.net/IgorShkulipa 16
Абстрактные классы
Возможны ситуации, когда базовый класс представляет собой
абстрактное понятие, и выступает лишь как базовый класс
(интерфейс) для производных классов.
Какова площадь объекта «Figure» и как его нарисовать?
Такие виртуальные функции следует объявлять чисто
виртуальными (pure virtual), добавив инициализатор =0,
опустив тело функции.
Класс является абстрактным, если в нем содержится хотя бы
одна чисто виртуальная функция, либо он не реализует хотя
бы одну чисто виртуальную функцию своего родителя.
Экземпляр абстрактного класса создать невозможно
18. http://www.slideshare.net/IgorShkulipa 18
Интерфейс
Интерфейс - абстрактный класс, содержащий только чисто
виртуальные методы.
Невозможно создать экземпляр интерфейса.
Все методы интерфейса должны быть реализованы в
производных классах.
Деструктор такого класса обязательно должен быть
виртуальным.