13132

Теоретические основы объектно-ориентированного программирования

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

Информатика, кибернетика и программирование

Лабораторная работа по теме Тема 5.2. Теоретические основы объектноориентированного программирования Цель данной лабораторной работы состоит в изучении основных понятий объектноориентированной технологии и получении практических навыков разработки объектно...

Русский

2013-05-08

258 KB

11 чел.

Лабораторная работа по теме

«Тема 5.2. Теоретические основы объектно-ориентированного программирования»

Цель данной лабораторной работы состоит в изучении  основных понятий объектно-ориентированной технологии и получении практических навыков разработки объектной  модели при решении различных задач.

Таким образом, в процессе разработки объектно-ориентированной программы на первых этапах проектирования необходимо:

определить множество образующих ее классов (декомпозиция);

для каждого класса объектов задать набор необходимых данных  (полей);

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

5.2.1. Задание

Выбрать вариант задания из пункта 5.2-2.

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

определить перечень исходных данных;

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

определить размерности и типы используемых данных;

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

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

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

Разработать объектную модель задачи логического уровня, определив иерархию классов и их функциональное содержание, для чего необходимо определить:

базовый(е) класс(ы) и их структуру;

классы – наследники;

схему (иерархию) наследования классов.

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

поля;

свойства;

методы;

конструкторы.

поведение (возможные действия) объектов, которые объекты могут выполнить  для решения задачи.


5.2.2.  Варианты задания

Для решения задачи данной лабораторной  работы можно воспользоваться заданием из табл. 5.1-1 (Лабораторная работа темы 5.1) или получить его у преподавателя.

5.2.3. Содержание отчета

  1.  Тема и название работы.
  2.  Общее задание на разработку модели и вариант задания.
  3.  Формализация задания и ее геометрическая иллюстрация.
  4.  Объектные  модели решения задачи на следующих уровнях:
  5.  на концептуальном уровне;
  6.  на логическом уровне;
  7.  на уровне реализации.

5.2.4. Пример выполнения задания

  1.  Тема  и название работы:

Теоретические основы объектно-ориентированного программирования – Формирование списка фамилий студентов, которым по итогам сессии необходимо повысить успеваемость до фактического среднего уровня.

  1.  Вариант задания:

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

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

Формируемый список фамилий студентов должен быть представлен в двух видах: в порядке убывания среднего балла, полученного за сессию, а также по алфавиту (1 вариант); или только в порядке убывания среднего балла, полученного за сессию (2 вариант). Исходные списки студентов и результатов сессии могут находиться как в текстовом файле, так, и введены с клавиатуры (1 вариант) или только вводиться с клавиатуры (2 вариант).

  1.  Формализация задания

Для решения вариантов задач необходимо  определить данные (имена и тип) и

     функциональные действия, связанные с этими данными:

  •  входные:
    •  n – количество студентов в одной группе  (As Integer);
    •  m – количество экзаменов в одной группе  (As Integer);
    •  fam(n-1) – одномерный массив фамилий студентов одной группы
      (
      As String);
    •  oc(n-1,m) – двумерный массив оценок студентов одной группы
      (
      As Integer);

  •  рассчитываемые:
  •  so(n-1)– одномерный массив средних баллов за сессию каждого из n студентов одной группы (As Double);
  •  sr - общий средний балл группы (As Double);

  •  выходные:
  •  k – число студентов, для которых  средняя оценка so(i)меньше средней по группе sr (As Integer);
  •  f(k-1) - одномерный массив фамилий искомых студентов
    (
    As String);
  •  sb(k-1) - одномерный массив их средних баллов (As Double);

  •  действия:
    •  ввод исходных данных (фамилий студентов и их оценок);
    •  вывод результатов на форму.

Геометрическая иллюстрация показана на рис. 5.2-1.

   Исходные данные для решения задачи:

           Вводимые        Вводимые           Рассчитываемые

Массив фамилий

fam( )

 0

Шакин

Сосновиков

Кравченко

Загвоздкина

Минязов

n-1

Массив оценок

oc( , )

   0                             m-1

2

3

3

4

2

3

3

3

3

3

4

4

4

4

4

4

5

4

5

4

5

5

5

5

5

n-1

Средние оценки каждого студента
so( )

         0

n-1

Общий средний балл всей группы

sr

             Выходные данные:

Массив фамилий студентов с низким средним баллом

f ( )

 0

k-1

Средние баллы, которые ниже общегосреднего

sb( )

             0

          k-1

Рис. 5.2-1.

  1.  Объектная  модель решения задачи:

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

1 вариант объектной модели (с применением полиморфизма)

Для задачи 1 варианта исходные данные могут,  как вводиться с клавиатуры, так  и считываться из файла; результирующие списки выводятся и по убыванию среднего балла, и по алфавиту. Так как один из основных принципов ООП - полиморфизм реализуется с помощью виртуальных методов, которые объявляются в абстрактных классах, то  при анализе предметной области на концептуальном уровне, можно выделить 4 класса (рис. 5.2-2). Причем один класс с исходными данными – базовый, и три производных класса с результатами, в том числе один абстрактный класс.

  1.  Объектная модель задачи на концептуальном уровне:

          

                      Рис. 5.2-2

  1.  Объектная модель задачи на логическом уровне

       представлена

        на рис.5.2-3;

           Рис. 5.2-3

  1.  Объектная модель задачи на уровне реализации.

   Определим содержание полученных  классов:

  Базовый класс Студенты:

  1.  Поля:
    •  Fn – число студентов в группе  (As  Integer);
    •  Fm  -  количество экзаменов в сессию  (As  Integer);
      •  Ffam() - одномерный строковый массив фамилий студентов;
    •  Foc(,) - двумерный целочисленный массив оценок;
    •  Fso() - вещественный  массив средних оценок каждого  

               студента;

  •  Fsr - общий средний балл за сессию студентов одной группы
             
    (As  Double).

В соответствии с основным принципом ООП – инкапсуляцией – объявим все поля для всех классов закрытыми (Private). Имена всех закрытых (внутренних) полей будем начинать с буквы F(от англ. field,поле).

  1.  Свойства для чтения и записи полей класса:  
  •  fam – для чтения и записи фамилий студентов;
    •  oc – для чтения и записи массива оценок;
  •  n – для чтения и записи количества студентов в группе.
    •  m – для чтения и записи количества экзаменов;

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

  1.  Свойства только для чтения полей класса:
    •  so - для чтения средних оценок студентов;
    •  sr - для чтения общего среднего балла группы.

Значения этих полей не могут изменяться вне класса, а вычисляются методом sred()этого класса из значений массива Foc(,).

  1.  Методы:
    •  процедура - подпрограмма sred()нахождения средних оценок каждого студента и общего среднего балла в группе;
    •  перегружаемая процедура vvod() без параметров для  ввода данных с клавиатуры;
    •  перегружаемая процедура  vvod() с параметрами для ввода данных из файла;
    •  перегружаемые процедуры  VivodMas( ) вывода одномерных массивов разного типа (для  String  и для  Double);
    •  стандартная процедура – подпрограмма vivodMatr() для вывода целочисленной матрицы.

Так как методы класса напрямую «видят» все поля своего класса и непосредственно работают с полями класса, то поля класса, как правило, не включаются в их список формальных параметров. Часто обычные методы класса вообще не имеют параметров. Некоторые методы могут быть перегружаемыми (Overloads), т.е. иметь одинаковые имена, но различные формальные параметры и различный код, выполняя, соответственно, похожие, но различные действия (например, процедура ввода данных с клавиатуры и процедура ввода данных чтением из файла). Необходимо отличать перегрузку от переопределения. Переопределение (Overrides) происходит только при наследовании, когда метод в производном классе модифицирует или полностью изменяет логику идентичного метода базового класса. Но сигнатура переопределенного метода (список формальных параметров)должна  быть полностью такой же, как в базовом методе.

  1.  Конструкторы (New) для создания экземпляров (объектов) класса:
    •  конструктор при  вводе данных с клавиатуры двух параметров (число студентов и число экзаменов), который выделяет необходимое количество памяти под все массивы – поля класса и инициализирует поля  Fn  и  Fm  через свойства;
    •  конструктор  при  вводе данных из файла с одним параметром (число студентов), который выделяет необходимое количество памяти  только под массивы Ffam  и  Fso,  т.к. число экзаменов пока неизвестно;
    •  пустой конструктор по умолчанию (без параметров) «на всякий случай», правильный стиль требует, чтобы среди конструкторов класса всегда присутствовал конструктор по умолчанию.

Конструктор(ы) – процедуры New, т.е. методы, которые вызываются при создании объекта (экземпляра) этого класса. Все классы должны иметь конструктор, даже те, которые не выполняют конкретной инициализации, даже пустой класс имеет конструктор по умолчанию, вставленный компилятором Visual Basic. За исключением базового класса System.Object, все классы создаются наследованием какого-то другого класса. Конструктор по умолчанию для любого класса вызывается неявно из конструктора базового класса. Конструкторы класса тоже могут быть перегружаемыми, с различными формальными параметрами или без параметров (конструктор по умолчанию), но для них не требуется ключевое слово Overloads. В производных классах для конструкторов с параметрами необходимо непосредственно вызывать конструктор базового класса оператором MyBase.New

Производный абстрактный  класс  MustInheritClass  Результат, являющийся наследником класса  Студенты:

Абстрактные классы (MustInherit Class) предназначены только для наследования, создавать объекты этих классов нельзя,так как такие классы содержат хотя бы один виртуальный (абстрактный) метод (MustOverride Sub), т.е. метод, который объявляется, но не реализуется в данном классе и должен быть переопределен в наследующих классах. Именно с помощью виртуальных методов реализуется один из основных принципов ООП - полиморфизм.Это слово в переводе с греческого означает «много форм», что в данном случае значит «один вызов – много методов». Применение виртуальных методов обеспечивает гибкость и возможность расширения функциональности класса. Также виртуальные методы незаменимы и при передаче объектов в методы в качестве параметра. Формальным параметром метода описывается объект базового класса, а при вызове в него передается в качестве фактического параметра объект производного (наследующего) класса и по типу этого фактического параметра определяется какой конкретно метод будет реализован. Понятно, что для вызова любой прцедуры надо знать ее адрес в памяти. Для обычных методов компилятор сразу записывает в машинный код нужный адрес, потому что он заранее известен– это так называемое статическое связывание (на этапе компиляции), при выполнении программы этот адрес не меняется. Для виртуального метода адрес неизвестен, т.к. в базовом классе он только объявлен, но не определен, а для каждого класса – наследника адрес виртуального метода – свой собственный. Поэтому при вызове виртуального метода используется динамическое связывание – адрес вызываемой процедуры определяется при выполнении программы, когда уже определен тип объекта, с которым работает метод, т.е. тип фактического параметра. При описании классов рекомендуется определять в качестве виртуальных те методы, которые в производных классах должны реализовываться по-другому. Если во всех классах иерархии метод будет выполняться одинаково, его лучше определить как обычный метод.

  1.  Поля:
    •  Fk - количество студентов, которым надо повысить успеваемость, т.е. имеющих средний балл ниже общего среднего балла группы (As  Integer);
    •  Ff() - одномерный строковый массив их фамилий;
    •  Fsb() – одномерный вещественный  массив их средних оценок;

  1.  Свойства только для чтения полей класса:
    •  k - для чтения количества студентов, которым надо повысить успеваемость;
    •  f -для чтения их фамилий;
    •  sb - для чтения их средних оценок.

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

  1.  Методы:
    •  процедура - подпрограмма FormirSpisok()формирования списка студентов, имеющих средний балл ниже общего среднего балла группы (формирования полей класса) из исходных данных, записанных в базовом классе;
    •  виртуальный метод – MustOverride  Sub sort()- процедура сортировки списка студентов. Способ сортировки (по убыванию среднего балла или по алфавиту) должен быть переопределен в двух классах-наследниках этого класса СписПоУбыв и СписПоАлф.

  1.  Конструкторы (процедуры  New) класса:
    •  конструктор с параметрами вызывает конструктор базового класса и выделяет необходимое количество памяти под массивы – поля класса;
    •  пустой конструктор по умолчанию (без параметров) «на всякий случай», правильный стиль требует, чтобы среди конструкторов класса всегда присутствовал конструктор по умолчанию.

Производный класс СписПоУбыв, являющийся наследником

класса Результат:

  1.  Методы:
    •  переопределенный (Overrides) метод базового класса sort()- процедура сортировки по убыванию массива средних баллов студентов, имеющих средний балл ниже общего среднего балла группы  с одновременной перестановкой их фамилий;

  1.  Конструкторы (процедуры  New) класса:
    •  конструктор с параметрами необходим для вызова конструктора базового класса;
    •  пустой конструктор по умолчанию (без параметров) «на всякий случай», правильный стиль требует, чтобы среди конструкторов класса всегда присутствовал конструктор по умолчанию.


Производный класс
СписПоАлф, являющийся наследником

Класса Результат:

  1.  Методы:
    •  переопределенный (Overrides) метод базового класса sort()- процедура сортировки по алфавиту массива фамилий студентов, имеющих средний балл ниже общего среднего балла группы  с одновременной перестановкой их средних баллов;

  1.  Конструкторы (New) класса:
    •  конструктор с параметрами необходим для вызова конструктора базового класса;
    •  пустой конструктор по умолчанию (без параметров) «на всякий случай», правильный стиль требует, чтобы среди конструкторов класса всегда присутствовал конструктор по умолчанию.

  1.  Диаграмма (иерархия) классов.

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

    

                             Рис. 5.2-4.

Эта диаграмма (рис. 5.2-4) была получена по готовому программному коду проекта VS .NET. Чтобы получить иерархию классов,  необходимо в окне Обозреватель решений выделить имя проекта, а затем выбрать мышью иконку  «Перейти к схеме классов», в результате чего откроется окно ClassDiagram1.cd

2 вариант объектной модели (без применения полиморфизма):

Для задачи 2 варианта исходные данные вводятся с клавиатуры, результирующий список фамилий студентов формируется только по убыванию среднего балла. Анализируя предметную область на концептуальном уровне, можно выделить 2 класса, причем один класс с исходными данными – базовый, и один производный класс с результатами (рис. 5.2-5).

Объектная модель задачи на концептуальном уровне:

       

                      Рис. 5.2-5

Объектная модель задачи на логическом уровне представлена

    на рис.5.2-6

                              Рис. 5.2-6

Объектная модель задачи на уровне реализации.

Определим содержание полученных  классов.

        Базовый класс Студенты:

  1.  Поля:
    •  Fn -  число студентов в группе   (As  Integer);
    •  Fm  - количество экзаменов в сессию  (As  Integer);
    •  Ffam() - одномерный строковый массив фамилий студентов;
    •  Foc(,) - двумерный целочисленный массив оценок;
    •  Fso() - вещественный  массив средних оценок каждого  студента;
    •  Fsr- общий средний балл за сессию студентов одной группы

(As Double).

В соответствии с основным принципом ООП – инкапсуляцией – объявим все поля для всех классов закрытыми (Private). Имена всех закрытых (внутренних) полей будем начинать с буквы F(от англ. field,поле).

  1.  Свойства для чтения и записи полей класса:  
    •  fam – для чтения и записи фамилий студентов;
    •  oc – для чтения и записи массива оценок;
    •  n –  для чтения и записи количества студентов в группе;
    •  m – для чтения и записи количества экзаменов.

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

  1.  Свойства только для чтения полей класса:
    •  so - для чтения средних оценок студентов;
    •  sr - для чтения общего среднего балла группы.

Значения этих полей не могут изменяться вне класса, а вычисляются методом sred()этого класса из значений массива Foc(,).

  1.  Методы:
    •  процедура - подпрограмма sred()нахождения средних оценок каждого студента и общего среднего балла в группе;
    •  процедура vvod()без параметров для  ввода данных с клавиатуры;
    •  перегружаемые процедуры VivodMas()вывода одномерных массивов разного типа (для String и для Double);
    •  стандартная процедура - подпрограмма vivodMatr()  для вывода целочисленной матрицы.

Так как методы класса напрямую «видят» все поля своего класса и непосредственно работают с полями класса, то поля класса, как правило, не включаются в их список формальных параметров. Часто обычные методы класса вообще не имеют параметров. Некоторые методы могут быть перегружаемыми (Overloads), т.е. иметь одинаковые имена, но различные формальные параметры и различный код, выполняя, соответственно, похожие, но различные действия (например, процедура вывода вещественного массива и процедура вывода строкового массива).

  1.  Конструкторы (процедуры  New)  для создания экземпляров (объектов) класса:
    •  конструктор при  вводе данных с клавиатуры с двумя параметрами (число студентов и число экзаменов), который выделяет необходимое количество памяти под все массивы – поля класса и инициализирует поля  Fn  и  Fm  через свойства;
    •  пустой конструктор по умолчанию (без параметров) «на всякий случай», правильный стиль требует, чтобы среди конструкторов класса всегда присутствовал конструктор по умолчанию.

Конструктор(ы) – процедуры New, т.е. методы, которые вызываются при создании объекта (экземпляра) этого класса. Все классы должны иметь конструктор, даже те, которые не выполняют конкретной инициализации, даже пустой класс имеет конструктор по умолчанию, вставленный компилятором Visual Basic. За исключением базового класса System.Object, все классы создаются наследованием какого-то другого класса. Конструктор по умолчанию для любого класса вызывается неявно из конструктора базового класса. Конструкторы класса тоже могут быть перегружаемыми, с различными формальными параметрами или без параметров (конструктор по умолчанию), но для них не требуется ключевое слово Overloads. В производных классах для конструкторов с параметрами необходимо непосредственно вызывать конструктор базового класса оператором MyBase.New.

Производный класс Результат, являющийся наследником класса Студенты:

  1.  Поля:
    •  Fk-  количество студентов, которым надо повысить успеваемость, т.е. имеющих средний балл ниже общего среднего балла группы
      (As  Integer);
    •  Ff()-  одномерный строковый массив их фамилий;
    •  Fsb() - одномерный вещественный  массив их средних оценок.

  1.  Свойства только для чтения полей класса:
    •  k -  для чтения  количества студентов, которым надо повысить успеваемость;
    •  f - для чтения их  фамилий;
    •  sb - для чтения их средних оценок.

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

  1.  Методы:
    •  процедура - подпрограмма FormirSpisok()  формирования списка студентов, имеющих средний балл ниже общего среднего балла группы (формирования полей класса) из исходных данных, записанных в базовом классе;
    •  процедура sort() - сортировки списка студентов по убыванию среднего балла.

  1.  Конструкторы (процедуры  New) класса:
    •  конструктор с параметрами необходим для вызова конструктора базового класса и выделяет необходимое количество памяти под массивы – поля класса;
    •  пустой конструктор по умолчанию (без параметров) «на всякий случай», правильный стиль требует, чтобы среди конструкторов класса всегда присутствовал конструктор по умолчанию.

5.   Диаграмма (иерархия) классов.

Диаграмма классов уровня реализации здесь приведена в качестве иллюстрации и в этой работе студентам для своих задач ее показывать не нужно. Эта диаграмма (рис. 5.2-7) была получена по готовому программному коду проекта VS .NET. Чтобы получить иерархию классов,  необходимо в окне Обозреватель решений выделить имя проекта, а затем выбрать мышью иконку «Перейти к схеме классов», в результате чего откроется окно ClassDiagram1.cd

 Рис. 5.2-7   


5.2.5. Контрольные вопросы по теме
«Теоретические основы объектно-ориентированного программирования»

  1.  Что означает объектно-ориентированный подход в программировании?
  2.  Что является классом в ООП?
  3.  Что является объектом в ООП?
  4.  Какие основополагающие принципы  ООП известны?
  5.  Что лежит в основе ООП?
  6.  Что такое инкапсуляция?
  7.  Что такое наследование?
  8.  Что такое полиморфизм?
  9.  Из каких элементов состоит класс?
  10.  Какие модификаторы доступа известны?
  11.  Что такое модификаторы, устанавливающие принадлежность к классу или  к экземпляру класса?
  12.  Как описывается класс?
  13.  Что может быть членом класса?
  14.  Какие правила обращения к переменным и процедурам?
  15.  Какие области видимости известны?
  16.  Каким образом можно изменять состояние объекта?
  17.  Какие средства описания свойства класса известны?
  18.  Что такое конструкторы и для чего они используются?
  19.  Какие члены класса называются разделяемыми (статическими)?
  20.  Какие члены класса называются экземплярными?
  21.  В чем сходство и различие стандартных модулей, форм и классов?
  22.  Что такое поле класса?
  23.  Что такое свойство класса?
  24.  Что такое метод класса?
  25.  Что такое виртуальный метод класса и как он описывается?
  26.  Что такое абстрактный класс и как он описывается?
  27.  В чем заключается разница между переопределением и перегрузкой методов?
  28.  В чем заключается разница между статическим и динамическим связыванием?
  29.   Какая разница между перечисленными ниже понятиями (сформулируйте по одному предложению для каждого пункта)?

а) экземпляр и класс

б) тип данных и класс

в) класс и роль

г) тип объекта и тип сущности

д) класс и компонент

е) динамическое связывание и полиморфизм

ж) обобщение и наследование

з) наследование и классификация

  1.   Сформулируйте определения и приведите примеры следующих понятий.

а) атрибут/метод класса

б) атрибут/метод экземпляра

Р по теме «Тема 5.2. Теоретические основы ООП» Страница 46


 

А также другие работы, которые могут Вас заинтересовать

9497. Гормональные препараты. Антимикробные средства (АМ) 26.7 KB
  Гормональные препараты Минералокортикоиды: Альдостерон - обратное всасывание ионов натрия (реабсорбция) и секреция калия. Избыток отеки, повышение АД, гипокалиемия. Недостаток болезнь Аддисона - обезвоживание. Дезоксикорт...
9498. Антимикробные средства и Антибиотики 27.91 KB
  Антимикробные средства Фторхинолоны (спектр широкий): Поколение (преимущественно Гр-): Норфлоксацин (Нолицин) Офлоксацин (Таривид) Пефлоксацин (Абактал) Ципрофлоксацин (Ципролет, Ципробай) Ломефлоксацин (Максаквин...
9499. Антибиотики показания и нейротоксичность 29.89 KB
  Антибиотики Пенициллины. Природные (биосинтетические): Короткого действия - 4-6ч. - Бензилпенициллин Na и K соли. Вводят парентерально - в/м. Если речь о внутривенном введении, то вводить только натриевую соль можно, калие...
9500. Антибиотики. Гликопептидные антибиотики 30.91 KB
  Антибиотики Монобактамы: Азтреонам вм и вв. Спектр - узкий Гр- кишечная палочка, сальмонеллы, шигеллы, клебсиеллы, протей, гемофильная и синегойная палочка, менингококк, гонококк. Разрушается БЛРС (бета-лактамазы расширенного спектра)...
9501. Антибиотики. Витаминные препараты 31.09 KB
  Антибиотики Полимиксины. Полимиксин М: Гр- внутрь, местно. Полимиксин В - парентерально, используется редко, т.к больше побочных эффектов. Показания к применению: колиэнтерит, дизентерия (кишечная, синегнойная, гемофильная па...
9502. Индийская грекоримская и арабская грамматические традиции. (Основные проблемы и 1-2 имени) 33 KB
  Индийская грекоримская и арабская грамматические традиции. (Основные проблемы и 1-2 имени) Языкознание делится на общее и частное. Общее языкознание занимается выработкой лингвистических теорий (на основании одного языка или сравнении многих языков)...
9503. Фонетика и фонология. Акустическая и артикуляционная классификация гласных и согласных звуков 37 KB
  Фонетика и фонология Акустическая и артикуляционная классификация гласных и согласных звуков. Артикуляция - работа органов речи, направленная на производство звуков речи. Артикуляция складывается из трех частей: приступа (экскурсии) звука...
9504. Роберт Бёрнс 1759 – 1796 24.52 KB
  Роберт Бернс 1759 - 1796 Великий народный поэт, крупнейший лирик XVIII века в английской литературе (точнее - шотландской) Родился в семье бедного шотландского крестьянина. Шотландия – одна из бедных национальных окраин Британии полно...
9505. Пьер-Огюстен Карон (де) Бомарше (1732 – 1799) 27.01 KB
  Пьер-Огюстен Карон (де) Бомарше (1732 - 1799) Всем известны замечательные комедии Бомарше Севильский цирюльник, Свадьба Фигаро, которые идут на драматической и оперной сцене (оперы Россини и Моцарта). Бомарше - создатель самых ос...