Обработка текстовой информации, символы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обработка текстовой информации, символы



В. В. Вдовенко

 

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ

ПРОГРАММИРОВАНИЕ

Утверждено редакционно-издательским советом

университета в качестве лабораторного практикума

для бакалавров направлений подготовки

09.03.02 «Информационные системы»

и 09.03.04 «Программная инженерия»

очной формы обучения

 

 

 

 

 

Красноярск 2021

УДК 519.682(075.8)

ББК 32.973.26-01я7

    В25

 

Рецензенты:

кандидат технических наук, доцент Е. Е. Носкова

(Сибирский федеральный университет);

кандидат технических наук, профессор А. Г. Суворов

(Сибирский государственный аэрокосмический университет

имени академика М. Ф. Решетнева)

 

 

 

Вдовенко, В. В.

В25   Объектно-ориентированное программирование: лаб. практикум для

     бакалавров  направлений  подготовки  09.03.02   «Информационные

     системы»  и 09.03.04 «Программная инженерия» очной формы обу-

     чения  / В. В. Вдовенко; Сиб.  гос.  аэрокосмич.  ун-т.  –  Красноярск,

     2021. – 104 с.

 

 Приведены описания девяти лабораторных работ, входящих в состав курса «Объектно-ориентированное программирование». Лабораторные работы нацелены на получение практических навыков по реализации технологии объектно-ориентированного программирования средствами языка C#.

Предназначен для студентов, обучающихся по направлениям бакалавриата 230200.62 «Информационные системы» и 231000.62 «Программная инженерия», очной формы обучения.

 

УДК 519.682(075.8)

ББК 32.973-01я7

©  Сибирский государственный аэрокосмический

университет имени академика М. Ф. Решетнева, 2014

© Вдовенко В. В., 2014

 
 

ОГЛАВЛЕНИЕ

 


Предисловие...........................................................................................    4

 

Лабораторная работа 1. Обработка текстовой информации,

     символы и строки.........................................................................    6

Лабораторная работа 2. Создание классов......................................   20

Лабораторная работа 3. Наследование классов...............................   28

Лабораторная работа 4. Программирование

    с использованием интерфейсов..................................................   35

Лабораторная работа 5. Разработка приложений

    в среде Windows. Диалоговые окна. Меню...............................   37

Лабораторная работа 6. Программирование графики....................   52

Лабораторная работа 7. Работа с файловой системой....................   58

Лабораторная работа 8. Работа с данными в формате XML..........   67

Лабораторная работа 9. Разработка многопоточных

    приложений..................................................................................   90

 

Послесловие........................................................................................... 100

 

Библиографический список................................................................. 101

     
 
 

ПРЕДИСЛОВИЕ


Данный лабораторный практикум написан в соответствии с рабочей программой по дисциплине «Объектно-ориентированное программирование», которая входит в базовую часть профессионального цикла дисциплин учебного плана по направлениям подготовки бакалавров 230200.62 «Информационные системы» и 231000.62 «Программная инженерия».

Целью лабораторного практикума является формирование
у студентов профессиональных компетенций и практических навыков по реализации методологии объектно-ориентированного программирования на одном из наиболее популярных в течение последнего
десятилетия языков программирования– языкеC#. Объектно-ориен-тированная методология неотделима от языка С#, и все программы на этом языке имеют объектную ориентацию.

Лабораторный практикум состоит из девяти лабораторных работ, на выполнение которых в соответствии с учебным планом отводится 34 часа аудиторных занятий. Работы посвящены изучению таких базовых понятий дисциплины «Объектно-ориентированное программирование», как классы и объекты, наследование, интерфейсы, работа с классами библиотеки классов платформы. NET.

Лабораторные работы 1–4 нацелены на разработку собственных классов, а лабораторные работы 5–9 посвящены применению библиотечных классов для решения самых типичных задач, которые встречаются в практике программирования, таких как работа с графикой, файловой системой, XML - документами и разработка многопоточных приложений.

Все лабораторные работы имеют одинаковую структуру: вначале формулируются цели и задачи, затем приводятся краткие теоретические сведения по теме работы, дается порядок выполнения, в заключение предлагаются контрольные вопросы и варианты практических заданий, при выполнении которых студенты могут использовать среду программирования Visual Studio. NET.

Для улучшения восприятия материала в тексте практикума служебные слова, операторы языка С# и листинги программ в примерах выделены шрифтом полужирного начертания.

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

Автор надеется, что данный лабораторный практикум будет полезен следующим категориям читателей:

– студентам вузов, изучающим языки и современные технологии программирования;

– преподавателям, ведущим практические и лабораторные занятия по языкам и технологиям программирования;

– слушателям системы профессиональной переподготовки кадров, желающим получить специальность «Программист ЭВМ»;

– лицам, желающим самостоятельно изучить язык С# и основы быстрой разработки приложений для платформы.NET.

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

Замечания и предложения по улучшению лабораторного практикума автор просит направлять по адресу: 660014, г. Красноярск,
проспект имени газеты «Красноярский рабочий», 31, Сибирский
государственный аэрокосмический университет имени академика
М. Ф. Решетнева, кафедра информатики и вычислительной техники; адрес электронной почты: vdovenco_vv.@inbox.ru.

     
 
 

Лабораторная работа 1

И СТРОКИ

 

Цель работы: приобретение практических навыков по применению классов библиотеки FCL для работы с символами и строками в программах на языке C#.

Задачи работы:

– изучить классы библиотеки FCL, предназначенные для обработки строк и символов в программах на языке С#;

– выполнить практическое задание по применению этих классов.

Namespace TestCharMethods

{

class Program

{

   static void Main(string[ ] args)

   {

       Char a = ' Я ',ch = 'a', ch1 = '1', lim = ';', chc = '\xA';;

// Вывод кодов символов

     Console.WriteLine("a = {0}, код символа = {1}", a, (int)a);

       Console.WriteLine("Статические методы класса Сhar:");

       double d1, d2;

       d1 = char.GetNumericValue(ch);

       d2 = char.GetNumericValue(ch1);

       Console.WriteLine(" Метод GetNumericValue:");

       Console.WriteLine("sym 'a' - value {0}", d1);

       Console.WriteLine("sym '1' - value {0}", d2);

       System.Globalization.UnicodeCategory cat1, cat2;

// Вывод значений категорий символов

     cat 1 = char. GetUnicodeCategory (ch 1);

       cat2 = char.GetUnicodeCategory(lim);

       Console.WriteLine(" Метод GetUnicodeCategory:");

       Console.WriteLine("sym '1' - category {0}", cat1);

       Console.WriteLine("sym ';' - category {0}", cat2);

       Console.WriteLine(" Метод IsControl:");

       Console.WriteLine("sym '\xA' - IsControl - {0}",

       char.IsControl(chc));

       Console.WriteLine("sym ';' - IsControl - {0}",

       char.IsControl(lim));

       Console.WriteLine(" Метод IsSeparator:");

       Console.WriteLine("sym ' ' - IsSeparator - {0}",

       char.IsSeparator(' '));

       Console.WriteLine("sym ';' - IsSeparator - {0}",

// Проверка, является ли символ управляющим

       char. IsSeparator (lim));

       Console.WriteLine(" Метод IsSurrogate:");

       Console.WriteLine("sym '\u10FF' - IsSurrogate - {0}",

       char.IsSurrogate('\u10FF'));

       Console.WriteLine("sym '\\' - IsSurrogate - {0}",

       char.IsSurrogate('\\'));

       Console.WriteLine(" Метод Parse:");

       string str = " A ";

      // Преобразование строки str в символ

       ch = char.Parse(str);

       Console.WriteLine("str:{0} char: {1}", str, ch);

     // Вывод минимальных и максимальных значений символов и их

      // кодов

          Console.WriteLine("Минимальное и максимальное значение:

         {0}, {1}",

         char.MinValue.ToString(), char.MaxValue.ToString());

         Console.WriteLine(" Их коды: {0}, {1}", (int)char.MinValue,

         (int)char.MaxValue);

         Console.ReadLine();

   }

}

}

 

 

Рис. 1.1. Вывод программы из листинга 1.1

Листинг 1.2. Использование методов Equals и CompareTo класса С har

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace сравнение _ символов

{

class Program

{

   static void Main(string[] args)

   {

      char chA = 'A', chB = 'B';

     // Применение метода Equals для сравнения символов

      Console.WriteLine(" Метод Equals");

      Console.WriteLine(chA.Equals('A'));        

      Console.WriteLine('b'.Equals(chB));         

      char ch1, ch2;

      int dif;

      Console.WriteLine(" Метод CompareTo");

      ch1 = 'A'; ch2 = 'Z';

      dif = ch1.CompareTo(ch2);

      Console.WriteLine(" Расстояние между символами {0}, {1} = {2}",

      ch1, ch2, dif);

      dif = chB.CompareTo(chA);

      Console.WriteLine(" Расстояние между символами {0}, {1} = {2}",

      chB, chA,  dif);

       Console.ReadLine();

   }

}

}

 

Рис. 1.2. Вывод программы из листинга 1.2

 

Класс String. Класс String представляет текст как последовательность знаков Unicode. Объект класса String является упорядоченной коллекцией объектов класса Char, представляющей строку. Объект класса String называется неизменяемым, т. е. доступным только для чтения, поскольку после создания его значение не может быть
изменено. Методы, применяемые для изменения объекта String, на самом деле возвращают новый объект String, содержащий измененные данные. Если необходимо изменить фактическое содержимое объекта, то следует использовать класс System.Text.StringBuilder.

При создании объектов класса String можно использовать перегруженные конструкторы (листинг 1.3).

 

 

Листинг 1.3. Примеры применения перегруженных конструкторов класса String

 

// Инициализация объекта world строковой константой

// Конструктор не вызывается

       string world = " Язык C#"; // world =" Язык C#"

          // Вызов конструктора для инициализации строки s1

// значением, полученным путем повторения

// символа K 6 раз

string s1 = new string('K', 6); // s1 = KKKKKK

 

          // Создание массива символов с именем s2 путем

// преобразования строковой константы "Привет"

// в массив символов

       char[ ] s2 = "Привет".ToCharArray ();

       // Вызов конструктора для инициализации нового

// экземпляра класса String c именем s3 значением, заданным

// в виде массива знаков Unicode

string s3 = new string(s2); // s3 = Привет

// Вызов конструктора для инициализации нового экземпляр

// класса String c именем s4 значением, заданным массивом

// знаков Unicode с именем s2,

// начальной позицией знака в пределах данного массива и длиной

string s4 = new string(s2, 0, 2); // s4 = Пр

Класс String предоставляет члены для сравнения объектов, возврата индекса знака или строки в объекте String, копирования значения объекта, разделения или объединения строк, изменения значения строки, форматирования чисел, значений даты и времени, значений из перечисления в виде строки, а также нормализации строки (табл. 1.2).

 

Таблица 1.2

Class Program

{

   static void Main(string[ ] args)

   {

string txt = "Динамический метод Split выполняет разбор текста на

 элементы."

+    "Статический метод Join собирает строку из элементов";

Console.WriteLine("txt = {0}", txt);

Console.WriteLine("Разделение текста на простые предложения:");

 

// Размерность массивов SimpleSentences и Words устанавливается

 // в соответствии с размерностью массива, возвращаемого методом Split

string[ ] SimpleSentences, Words;

// В качестве разделителя предложений указан символ «точка»

SimpleSentences = txt.Split('.');

for(int i = 0; i < SimpleSentences.Length; i++)

Console.WriteLine("SimpleSentences[{0}] = {1}", i, SimpleSentences[i]);

string txtjoin = string.Join(",",SimpleSentences);

Console.WriteLine("txtjoin = {0}", txtjoin);

// В качестве разделителя слов указаны символы «запятая»,

// «запятая с пробелом» и «пробел»

Words = txt.Split(', ', ' ');                           

// Вывод значений слов

for(int i = 0; i < Words.Length; i++)

Console.WriteLine("Words[{0}] = {1}", i, Words[i]);

txtjoin = string.Join(" ",Words);

Console.WriteLine("txtjoin = {0}", txtjoin);

Console.ReadLine();

   }

}

}

 

 

Рис. 1.3. Вывод программы из листинга 1.4

 

Класс StringBuilder. Класс StringBuilder предоставляет подобный строке объект, значение которого является изменяемой последовательностью знаков. Значение считается изменяемым потому, что после создания его можно изменить путем добавления, удаления, замены или вставки знаков.

Наиболее часто используемые методы класса StringBuilder приведены в табл. 1.3, а примеры их применения показаны в листинге 1.5 и рис. 1.4.

 

Таблица 1.3

Методы класса StringBuilder

 

Название метода Описание
Append(<объект>) К строке, вызвавшей метод, присоединяется строка, полученная из объекта, который передан методу в качестве параметра
Insert(int location,< объект >) Вставляет строку, полученную из объекта, в позицию, указанную параметром location. Частным случаем метода Insert является метод Append
Remove (int start, int len) Удаляет подстроку длины len, начинающуюся с позиции start
Replace (string str1,string str2) Заменяет все вхождения подстроки str1 на строку str2

Листинг 1.5. Демонстрация методов класса StringBuilder

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace тест _StringBuilder

{

class Program

{

   static void Main(string[ ] args)

   {

     // Вызов конструктора класса StringBuilder для создания объекта с

    // именем sb  длиной 50 символов и инициализация его значением
               // константы

       StringBuilder sb = new StringBuilder(" Строка ", 50);

     // Добавление символов А, Б, С к концу объекта StringBuilder

       sb.Append(new char[ ] {' А ', ' Б ', ' С '});

     // Вывод длины строки и ее значения на экран

   Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());

     // Вставка строки в начало объекта sb

     sb.Insert(0, " Начало: ");

        Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());

    // Замена всех символов, являющихся русской буквой а нижнего

   // регистра строки sb, на символы, являющиеся русской буквой А

              // верхнего регистра

      sb.Replace('а', 'А');

    // Вывод длины новой строки и ее значения на экран

      Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());

Console.ReadLine();

   }

}

}

 

Рис. 1.4. Вывод программы

из листинга 1.5

Ввод текста из файла. Чтобы прочитать текст из файла, необходимо выполнить следующие действия:

– подключить пространство имен, в котором описываются стандартные классы для работы с файлами, using System. IO;

– объявить файловую переменную и связать ее с файлом на диске;

– выполнить операции чтения текста из файла;

– закрыть файл.

В листинге 1.6 приведен пример программы, выполняющей чтение текста из файла построчно и вывод прочитанных строк на консоль с проставление номеров строк.

 

Листинг 1.6. Чтение текста из файла и вывод его на консоль

 

using System;

using System.IO;

using System.Collections.Generic;

using System.Text;

namespace file_text

{

class Program

{

   static void Main(string[ ] args)

   {

       try

           {

          // Создание объекта класса StreamReader для чтения из файла

          // input.txt

            StreamReader f = new StreamReader("input.txt");

           string s;

         long i = 0;

          //Чтение строк из файла. Строка определяется как последователь-

          // ность символов, за которыми следует перевод строки (\n),

         // возврат каретки (\r) или за символом возврата каретки сразу

         // следует символ перевода строки (\r\n)

         // Возвращается значение null, если достигнут конец входного

         // потока

            while ((s = f.ReadLine())!= null)

          // Вывод на экран пронумерованных строк

       Console. WriteLine ("{0}: {1}", ++ i, s);

                         f. Close ();       

// Закрытие файла

       }

      // Исключение FileNotFoundExceptio n создается, когда попытка

      // доступа к файлу, не существующему на диске, заканчивается

      // неудачей

       catch (FileNotFoundException e)

       {

           Console.WriteLine(e.Message);

            Console. WriteLine ("Проверьте правильность имени файла");

           return;

      }

      Console.ReadLine();

   }

}

}

Если нужно считать все символы до конца файла и возвратить считанные данные как одну строку типа String, то можно воспользоваться оператором:

 

string s = f. ReadToEnd ();

 

Порядок выполнения работы

1. Изучить описание библиотечных классов Сhar, String, StringBuilder,предназначенных для обработки символов и строк.

2. Разработать программу (консольное приложение) на языке С # в соответствии с вариантом практического задания.

3. Ответить на контрольные вопросы.

4. Составить отчет в электронном виде, который должен содержать титульный лист, цель лабораторной работы, задание, ответы на контрольные вопросы, листинг программы и результаты ее работы.

 

Контрольные вопросы и задания

 

1. Какой класс библиотеки FCL предназначен для работы с символами?

2. Назовите классы библиотеки FCL для работы со строками.

3. Каким образом можно создать объекты класса String в программах на языке C#?

4. Приведите примеры создания объектов класса String.

5. Может ли быть изменен объект класса String после его создания?

6. С помощью какого метода класса String можно выполнить разбор текста на составляющие элементы?

7. Каким образом можно собрать строку из составляющих ее элементов?

8. В каких случаях для работы со строками следует использовать методы класса String Builder?

9. Каким образом выполняется добавление символов к концу объекта класса StringBuilder?

10.  Напишите код для вставки строки в начало объекта класса StringBuilder.

11.  В каком пространстве имен определены классы для работы с файлами?

12.  Перечислите действия, которые необходимо выполнить для чтения текста из файла.

Варианты практических заданий

 

В предлагаемых ниже заданиях требуется написать программу как консольное приложение для выполнения указанных в них действий.

1. Считать из текстового файла три предложения и вывести их на экран в обратном порядке.

2. Считать текст из файла и вывести на экран только предложения, содержащие введенное с клавиатуры слово.

3. Считать текст из файла и вывести на экран только строки, содержащие двузначные числа.

4. Считать английский текст из файла и вывести на экран слова, начинающиеся с гласных букв.

5. Считать текст из файла и вывести его  на экран, меняя местами каждые два соседних слова.

6.Считать текст из файла и вывести на экран только предложения, не содержащие запятых.

7. Считать текст из файла и определить, сколько в нем слов,
состоящих не более чем из четырех букв.

8. Считать текст из файла и вывести на экран только цитаты,
т. е. предложения, заключенные в кавычки.

9. Считать текст из файла и вывести на экран только предложения, состоящие из заданного количества слов.

10. Считать английский текст из файла и вывести на экран слова, начинающиеся и оканчивающиеся на гласные буквы.

11. Считать текст из файла и вывести на экран только строки, не содержащие двузначных чисел.

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

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

14. Считать текст из файла и вывести на экран, заменив цифры от 0 до 9 словами «ноль», «один»,..., «девять» и начиная каждое предложение с новой строки.

15. Считать текст из файла, вывести его на экран, найти в нем самое длинное слово и определить, сколько раз оно встретилось в тексте.

16. Считать текст из файла и вывести на экран сначала вопросительные, а затем восклицательные предложения.

17. Считать текст из файла и вывести его на экран, добавляя после каждого предложения, сколько раз встретилось в нем введенное с клавиатуры слово.

18. Считать текст из файла и вывести на экран все его предложения в обратном порядке.

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

20. Считать текст из файла и вывести на экран предложения, содержащие максимальное количество знаков пунктуации.

21. В исходном тексте удалить все строки, начинающиеся на заданную букву.

22. Подсчитать, сколько раз во введенном с клавиатуры тексте встречается слово «по».

23. Зашифровать введенный текст, заменив каждый символ на символ, стоящий через один от данного в таблице кодировки. Исходное разбиение на строки должно быть сохранено. Написать программу дешифрации зашифрованного файла.

24. В исходном тексте определить количество слов, у которых первый и последний символы совпадают друг с другом.

25. Во введенном тексте заменить строчные буквы прописными и повторить дважды каждую цифру.

26. Во введенном тексте заменить прописные буквы строчными и повторить дважды каждую букву А.

27. Выяснить, есть ли во введенном тексте слова, заканчивающиеся на букву f, и подсчитать количество таких слов. Слова в тексте разделяются пробелами.

28. Распечатать введенный текст, удалив из него символы, не являющиеся буквами и цифрами, и заменив каждую цифру на две звездочки (**). Исходное разбиение текста на строки должно быть сохранено.

29. В исходном тексте заменить несколько подряд идущих пробелов одним и подсчитать количество строк, начинающихся на заданную букву.

 

Лабораторная работа 2

СОЗДАНИЕ КЛАССОВ

 

Цель работы: приобретение практических навыков по созданию классов.

Задачи работы:

– изучить средства языка С # для создания классов;

– выполнить практическое задание по разработке собственных классов в программах на языке С #;

– изучить возможности унифицированного языка моделирования Unified Modeling Language (UML) для представления классов;

– разработать UML -диаграмму классов.

 

Порядок выполнения работы

 

1. Изучить гл. 6 «Классы и объекты языка C#» учебного пособия В. В. Вдовенко «Разработка приложений на языке C#» (Красноярск, 2010) (см. с. 115–150).

2. Изучить возможности языка UML для представления классов.

3. Разработать класс в соответствии с вариантом практического задания и создать консольное приложение.

4. Разработать UML -диаграмму классов для созданного приложения.

5. Ответить на контрольные вопросы.

6. Составить отчет в электронном виде, который должен содержать титульный лист, цель лабораторной работы, задание, ответы на контрольные вопросы, листинг программы и результаты ее работы.

Контрольные вопросы и задания

1. Дайте определение класса.

2. Охарактеризуйте объект. Приведите примеры объектов.

3. Какие роли играет класс в объектно-ориентированной программе?

4. Каким образом соотносятся понятия «класс» и «объект»?

5. Перечислите принципы объектно-ориентированного программирования.

6. Дайте определение объектно-ориентированного программирования.

7. В чем состоят преимущества объектно-ориентированного программирования?

8. Дайте определение метода класса.

9. В чем состоит принцип инкапсуляции? За счет чего обеспечивается инкапсуляция?

10. В чем заключается полиморфизм объектов?

11. Какие члены класса доступны другим классам?

12. Какие варианты доступа к членам класса могут быть реализованы в программе на языке C#?

13. Дайте определение термина «конструктор». Для чего предназначен конструктор?

14. Приведите синтаксис конструктора класса в общем виде. Проиллюстрируйте его фрагментом программы на языке C#.

15. Сколько конструкторов может содержать класс языка C#?

16. Какие умолчания для конструкторов приняты в языке C#?
В каком случае конструктор по умолчанию не используется?

17. Приведите синтаксис описания класса в общем виде. Проил-люстрируйте его фрагментом программы на языке C#.

18. Какие модификаторы типа доступа вам известны?

19. Какие особенности имеет использование полей класса,
в объявлении которых использовано служебное слово static?

20. Приведите синтаксис описания метода класса в общем виде.

21. Каким образом можно вернуть параметры из метода?

22. Приведите синтаксис создания объекта в общем виде. Проил-люстрируйте его фрагментом программы на языке C#.

23. Какой скрытый параметр автоматически передается в любой нестатический метод класса?

24. Могут ли методы класса быть закрытыми?

25. Какое значение инициализирует поля ссылочного типа по умолчанию?

26. Каким образом в определении класса реализуется такой принцип ООП, как инкапсуляция?

27. Приведите синтаксис метода-свойства класса.

28. Объясните, что представляет собой индексатор. В каких случаях при программировании следует использовать индексаторы?

29. Какой класс называют вложенным? В каком случае использование вложенного класса может иметь смысл?

30. Назовите элементы UML -диаграммы классов.

31. Каким образом можно создать UML -диаграмму классов?

 

Варианты практических заданий

 

В предлагаемых ниже заданиях требуется определить собственный класс и написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществлять проверку всех методов класса. Также необходимо построить UML-диаграмму классов.

1. Описать класс Процессор, содержащий сведения о марке, тактовой частоте, объеме кэша и стоимости. Предусмотреть инициализацию с проверкой допустимости значений полей. В случае недопустимых значений полей исключения выбрасываются. Записать свойства для получения состояния объекта. Написать программу, в которой создать массив объектов этого класса, заполнить его данными из текстового файла и найти в этом массиве все процессоры, марка которых соответствует значению, введенному с клавиатуры.

2. Описать класс Доставка, содержащий сведения о расстоянии, наименовании товара, дате доставки, государственном номере машины. Написать программу, в которой создать массив объектов этого класса, заполнить его данными из текстового файла и найти в этом массиве все товары, дата доставки которых соответствует заданной.

3. Описать класс Мобильный телефон, содержащий сведения
о наименовании телефона, стандарте связи, цене, заряде аккумулятора. Написать программу, в которой создать массив объектов этого класса, заполнить его данными из текстового файла и найти в этом массиве все телефоны цена, которых меньше или равна заданной.

4. Описать класс Спортсмен. Определить элементы-данные класса, позволяющие хранить сведения о фамилии, имени, отчестве, дате рождения, виде спорта, разряде, количестве медалей. Написать программу, в которой создать массив объектов этого класса, заполнить его данными из текстового файла и найти в этом массиве всех спортсменов, занимающихся определенным видом спорта.

5. Описать класс Квартира,содержащий сведения о количестве комнат, этаже в доме, стоимости, районе, в котором расположена квартира. Написать программу, в которой создать массив объектов этого класса, заполнить его данными из текстового файла и найти
в этом массиве все квартиры, расположенные в определенном районе и с заданным количеством комнат.

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

7. Описать класс, содержащий информацию о почтовом адресе
организации. Предусмотреть возможность раздельного изменения
составных частей адреса и проверки допустимости вводимых значений.

8. Описать класс для представления комплексных чисел. Разработать методы-свойства для получения состояния объекта, записать методы, обеспечивающие выполнение операций сложения, вычитания и умножения комплексных чисел.

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

10. Объявить класс Book, создающий тип Книга. Определить следующие элементы-данные класса:

– автор книги;

– название;

– год издания.

Предусмотреть следующие конструкторы класса:

– без параметров;

– получающий параметры.

Описать функции-методы класса:

– определения, относится ли год издания книги к какому-либо году, значение которого передается через параметр;

– определения, совпадает ли фамилия автора со значением,
передаваемым в виде параметра.

Написать программу, в которой создать массив объектов типа Book, заполнить его в диалоговом режиме и найти в этом массиве все книги определенного автора, например П. Нортона, изданные, скажем, после 2000 г.

11. Описать класс для представления даты. Предусмотреть возможности установки даты и изменения ее отдельных полей (года, месяца, дня) с проверкой допустимости вводимых значений. Создать методы изменения даты на заданное количество дней, месяцев и лет.

12. Описать класс для представления времени. Предусмотреть возможности установки времени и изменения его отдельных полей (часа, минуты, секунды) с проверкой допустимости вводимых значений. Создать методы изменения времени на заданное количество часов, минут и секунд.

13. Объявить класс Car, создающий тип Автомобиль. Определить следующие элементы-данные класса:

– марку автомобиля;

– год выпуска.

Предусмотреть следующие конструкторы класса:

– по умолчанию;

– получающий параметры.

Написать функции-методы класса:

– определения, относится ли год выпуска автомобиля к какому-либо году, значение которого передается через параметр;

– определения, совпадает ли название автомобиля со значением, передаваемым в виде параметра.

14. Описать класс, представляющий треугольник. Предусмотреть методы для создания объектов, вычисления площади, периметра. Описать свойства для получения состояния объекта.

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

16. Объявить класс Goods, создающий тип Товар. Определить следующие элементы-данные класса:

– название товара;

– год производства.

Предусмотреть следующие конструкторы класса:

– по умолчанию;

– получающий параметры.

Написать функции-методы класса:

– определения, относится ли год производства товара к какому-либо году, значение которого передается через параметр;

– определения, совпадает ли наименование товара со значением, передаваемым в виде параметра.

Написать программу, в которой создать массив объектов типа Goods, заполнить его в диалоговом режиме и найти в этом массиве все товары определенного наименования, дата производства которых соответствует, например, 1998 г.

17. Объявить класс Press, создающий тип Печатные издания. Определить элементы-данные класса:

– наименование издания;

– тип (газета или журнал);

– тираж.

Предусмотреть следующие конструкторы класса:

– по умолчанию;

– получающий параметры.

Написать функции-методы класса:

– определения, является ли печатное издание газетой или журналом;

– определения все



Поделиться:


Последнее изменение этой страницы: 2022-09-03; просмотров: 130; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.193.158 (0.33 с.)