Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include <stdio.h>
- // диапазон радио
- enum range_t { AM, FM };
- class Radio {
- protected:
- // частота
- double m_frequency;
- public:
- // конструктор
- Radio(double frequency) : m_frequency(frequency) { }
- // виртуальные методы реализованы в классах наследниках, метод перегруженный
- virtual void information() = 0;
- virtual void information(const char *filename, const char *openmode) = 0;
- // получить значение частоты радио (доступен в классах наследниках)
- double get_frequency() {
- return m_frequency;
- }
- // получение дипазона по частоте
- range_t range() {
- if (m_frequency < 130.0)
- return AM;
- else
- return FM;
- }
- // деструктор
- ~Radio() { }
- };
- class Military : public Radio {
- protected:
- // открытый ключ шифрования
- unsigned long m_encryption_key;
- public:
- // конструктор военного радио
- Military(double frequency, unsigned long encryption_key) : Radio(frequency), m_encryption_key(encryption_key) { }
- // реализация метода из базоваого класса
- void information() {
- printf("military radio (frequency: %lf, range: %s, encryption key: %lu)\n", m_frequency, (range() == AM ? "AM" : "FM"), m_encryption_key);
- }
- // и ещё одна
- void information(const char *filename, const char *openmode) {
- FILE *file = fopen(filename, openmode);
- if (!file)
- return;
- fprintf(file, "military radio (frequency: %lf, range: %s, encryption key: %lu)\n", m_frequency, (range() == AM ? "AM" : "FM"), m_encryption_key);
- fclose(file);
- }
- // получение открытого ключа шифрования (ТОЛЬКО чтение)
- unsigned long long get_encryption_key() {
- return m_encryption_key;
- }
- ~Military() {
- // ВОЕННЫЕ ЗАТИРАЮТ ДАННЫЕ О СВОЁМ РАДИО!1!!
- m_frequency = 0;
- m_encryption_key = 0;
- }
- };
- class Civilian : public Radio {
- private:
- // статическая константа - максимальная длина названия
- // статическая - потому что едина для всех объектов данного класса
- static const unsigned int CAPTION_LENGTH = 16;
- protected:
- // название гражданского радио
- char m_caption[CAPTION_LENGTH + 1];
- // факт наличия рекламы
- bool m_advertisement;
- public:
- // конструктор
- Civilian(double frequency, const char *caption, bool advertisement) : Radio(frequency), m_advertisement(advertisement) {
- strncpy(m_caption, caption, CAPTION_LENGTH);
- }
- // ко-ко-кок-кок
- void information() {
- printf("civilian radio \"%s\" (frequency: %lf, range: %s)\n", m_caption, m_frequency, (range() == AM ? "AM" : "FM"));
- }
- // тоже кококоокок
- void information(const char *filename, const char *openmode) {
- FILE *file = fopen(filename, openmode);
- if (!file)
- return;
- fprintf(file, "civilian radio \"%s\" (frequency: %lf, range: %s)\n", m_caption, m_frequency, (range() == AM ? "AM" : "FM"));
- fclose(file);
- }
- // название гражданского радио (чтение)
- const char *get_caption() {
- return m_caption;
- }
- // как название, только с рекламой
- bool get_advertisement() {
- return m_advertisement;
- }
- // деструктор
- ~Civilian() { }
- };
- int main() {
- // Radio *radio1 = new Radio(120.0);
- Radio *radio2 = new Military(110.0, 1234546);
- radio2->information();
- Radio *radio3 = new Civilian(150.0, "ko-ko-ko FM", false);
- radio3->information("out.txt", "w");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement