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

Введение

Технология Java включает в себя язык программирования Java, средства трансляции исходного текста программы - исходного кода - в специальную форму, пригодную для исполнения компьютером, и средства исполнения Java-программ на различных платформах, то есть в различных операционных системах и на различном аппаратном обеспечении. Основная особенность JAVA-технологии в том, что преобразованная на этапе трансляции в специальный код Java-программа полностью "машинонезависима".

Если исполняемый код, полученный из программ на других распространённых языках, обычно не пригоден для исполнения компьютером "другой платформы", то к исполняемому коду Java такое ограничение не относится. Правда, необходимо, чтобы для "целевой платформы" имелась реализация так называемой Java-машины - среды исполнения JAVA-программ.

JAVA-технологии, активно продвигаемые компанией SUN, получили широкое распространение (далеко не только в web-решения). А платформонезависимость Java, позволившая интегрировать средства исполнения Java-программ в браузеры, работающие в самых разных операционных системах, определила распространение Java в качестве элемента Web-технологий.

JAVA используется для создания сложных интерактивных элементов, связанных с web-сайтом. Например, на Java реализуются сложные инструменты для работы с базами данных, размещёнными в Web. Или графические интерфейсы, требующие вывода сложных интерактивных элементов. И, конечно, многое другое, от сетевых шахматных программ до средств редактирования звуковых файлов.


Особенности ООП в Java.

Реализация объекта.

При программировании с использованием объектно-ориентированного подхода одними из самых главных понятий являются понятия класса и объекта(экземпляр класса). Категория вопросов по объектам и классам в javaпокрывает следующие вопросы: Класс (class) Экземпляр класса (объект/instance), инстанциирование объектов.Объекты реального мира наделены двумя характеристиками: состояние и поведение. Собака имеет "состояние" (кличка, масть, шерсть, аппетит) и поведение (лай, виляние хвостом). Велосипед тоже имеет состояние (текущая передача, текущая скорость) и поведение (изменение передачи, изменение скорости). Чтобы начинать думать в терминах объектно-ориентированного программирования, надо выделить состояние и поведение объекта. Прямо сейчас уделите пару минут рассмотрению объектов реального мира, которые располагаются вокруг Вас. Для каждого объекта, которые Вы видите, ответьте на вопросы: "Какие возможные состояния может принимать этот объект?", "Какие действия может выполнять этот объект?". Запишите Ваши наблюдения. Вы, наверняка, заметили, что объекты различны по сложности; Ваша настольная лампа имеет два возможных состояния (включена и выключена) и два возможных действия (включить, выключить), однако настольное радио может иметь такой набор состояний: включено, выключено, текущая громкость, текущая станция; и возможные действия: включить, выключить, увеличить громкость, уменьшить громкость, искать, станцию и т.д. Кроме того, Вы можете заметить, что некоторые объекты содержат другие объекты. Все эти объекты реального мира могут быть переведены в объекты объектно-ориентированного программирования.

Принципиально программные объекты не отличаются от объектов реального мира: они все описываются состоянием и поведением. Объект хранит свое состояние в полях (переменные в некоторых языках программирования) и реализует свое поведение через методы (функции в некоторых языках программирования). Методы оперируют с внутренним состоянием объекта и рассматриваются как главный механизм объектно-ориентированной коммуникации. Сокрытие внутреннего состояния и требование работать с ним исключительно через методы называется инкапсуляцией. Инкапсуляция - это фундаментальный принцип объектно-ориентированного программирования. Возьмем для примера велосипед.

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

Сокрытие кода внутри объекта имеет ряд преимуществ:

  • Модульность. Исходный код объекта может быть написан и изменен независимо от кода других объектов. Однажды созданный, объект может быть произвольно использован в системе.
  • Сокрытие информации. Все взаимодействия с объектом осуществляются по средствам методов, при этом детали внутренней реализации скрыты от внешнего мира.
  • Повторное использование кода. Если объект уже существует (возможно, создан другим разработчиком), Вы можете использовать его в своей программе. При таком подходе, Вы можете использовать специфические объекты, написанные и протестированные узкими специалистами.
  • Легкость отладки и подключения. Если какой-то объект работает нестабильно, Вы можете просто удалить его из приложения и заменить другим. В качестве аналогии можно привести пример из реального мира. Если у Вас сломался болт, то Вы меняете сломанный болт, а ни весь механизм.

Реализация объекта.

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

Ниже приведен пример класса, одна из возможных реализаций. Синтаксис языка программирования Java покажется вам новым, однако логика класса основана на предыдущем обсуждении объектов велосипед. Поля cadence, speed и gear - это состояние объекта, а методы (changeCadence, changeGear, speedUp и т.д.) определяют взаимодействие с внешним миром.

Возможно, вы заметили, что класс Bicycle не содержит метод main. А все потому, что это не законченное приложение, это всего лишь чертеж велосипедов, который Вы можете использовать в приложении. Ответственность за использование нового объекта возлагается на другие классы вашего приложения

Реализация наследования.

Наследование — это отношение между классами, при котором один класс расширяет функциональность другого. Это значит, что он автоматически перенимает все его поля и методы, а также добавляет некоторые свои.

Наследование обычно возникает, когда все объекты одного класса одновременно являются объектами другого класса (отношение общее/частное). Например, все объекты класса Студент являются объектами класса Человек. В этом случае говорят, что класс Студент наследует от класса Человек. Аналогично класс Собака может наследовать от класса Животное, а класс Далматинец от класса Собака. Класс, который наследует, называется подклассом или потомком, а класс, от которого наследуют, называется суперклассом или предком.

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

Объектно-ориентированное программирование позволяет классам наследовать часто используемые поведение и состояние другого класса. Например, Велосипед является суперклассом для классов ГорныйВелопед, ШоссейныйВелосипед и Тандем. В языке программирования Java каждый класс может иметь только один суперкласс, однако один суперкласс может иметь неограниченное число потомков.

Синтаксис создания класса потомка аналогичен типовому классу. Вначале объявления класса, используя ключевое слово extends, укажите имя класса, от которого надо наследовать.

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

Реализация интерфейса

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

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

Чтобы создать интерфейс, используйте ключевое слово interface вместо class. Как и в случае с классами, вы можете добавить перед словом interface спецификатор доступа public (но только если интерфейс определен в файле, имеющем то же имя) или оставить для него дружественный доступ, если он будет использоваться только в пределах своего пакета. Интерфейс может содержать поля, но они автоматически являются статическими (static) и неизменными (final). Все методы и переменные неявно объявляются как public.

Класс, который собирается использовать определённый интерфейс, использует ключевое слово implements. Оно указывает, что интерфейс лишь определяет форму, а вам нужно наполнить кодом. Методы, которые реализуют интерфейс, должны быть объявлены как public.

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

Интерфейсы могут вкладываться в классы и в другие интерфейсы.

Если класс содержит интерфейс, но не полностью реализует определённые им методы, он должен быть объявлен как abstract.

Реализация Пакета

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

Платформа Java предлагает огромную библиотеку классов (набор пакетов), готовых для использования в Ваших приложениях. Эта библиотека известна как Интерфейс Программирования Приложений ("Application Programming Interface") или API. Эти пакеты выполняют наиболее часто встречающиеся задачи программирования. Например, объект String содержит состояние и поведение символьных строк; объект File позволяет программисту легко совершать операции (создавать, удалять, переименовывать и т.д.) с файлами операционной системы; объект Socket позволяет создавать и использовать сетевые сокеты; различные GUI (графический интерфейс пользователя) объекты: кнопки, chekbox'ы и т.д. могут быть использованы для создания графического интефейса. Вы можете выбирать буквально из тысяч классов. Это позволят разработчику сфокусироваться на создании логики приложения и не отвлекаться на технические детали реализации.

 

 


Составление программы по варианту задания и анализ полученных

Результатов.

Задание.

2.1.1 Описание объекта моделирования

Описание объекта проектирования

Бизнес-центр— офисный центр общей площадью около 24559,7 кв.м., расположенный в центре деловой активности города. Объект представляет собой 17 этажное офисное здание с подземной автостоянкой, расположенной в подвале. Офисный блок здания занимает площадь 1-16 этажей. На 1 этаже также расположены: главная рецепция, банк, кафетерий. 17 этаж здания является техническим.

Кабельная сеть бизнес-центра

Кабельная система офисного центра должна состоять из горизонтальной и магистральной подсистем.

Горизонтальная подсистема охватывает пространство между информационной розеткой (ИР) за потолочным пространством и горизонтальным кроссом в телекоммуникационном шкафу.

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

Рисунок 1 – Подсистемы сети бизнес-центра.

Горизонтальная подсистема включает в себя необходимое количество универсальных портов на базе унифицированных разъемов RJ-45 и/или оптических соединителей. Для прокладки горизонтальной подсистемы СКС используется кабель Nexans UTP 5e. Кабели оканчиваются розетками RJ-45, способными подключать также телефонные коннекторы RJ-11.

Магистральная подсистема соединяет этажные коммутационные панели с оборудованием в серверной комнате. В эту систему входит магистральный кабель, установленный вертикально между этажными коммутационными узлами, а также оборудование уровня ядра. В магистральной подсистеме используем одноходовые оптические кабели ИКВА-ПА8-0.5(08) на восемь волокон. Оптические коммутационные панели будут соединяться оптическими патч-кордами с активным оборудованием.

 

Составить математическую модель передачи данных в сети БЦ, позволяющую рассчитать влияние затухания, на линию передачи, относительно её длины. При этом учесть, что линии передачи строятся на волоконно-оптическом (магистральные линии) и вито-парном (горизонтальные линии) кабеле. Для расчёта параметров руководствоваться максимальными по длине сегментами линий передачи:

- на этажах (горизонтальные линии) до 100 м;

- по высоте здания (магистральные линии) исходить из количества этажей, отводимых под офисные помещения, их высоты (2.8 м) и запас не более 15% на каждый этаж.

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

Расчёт параметров линий передачи

Расчёт характеристик медного кабеля

Экспериментально было установлено, что в зависимости от частоты

нелинейно меняется затухание кабеля: чем больше частота, тем сильнее

затухание. Коэффициент затухания от частоты рассчитывается по следующей формуле:

(1)

где (f) – максимальное допустимое затухание на заданной длине х в метрах, дБ;

f – частота сигнала (для кабеля категории 5e f = 125 МГц), МГц;

х – длинна горизонтального участка (задавать с клавиатуры);

a, b, c – величины, определяемые вариантом (табл. 1).

Таблица 1

 

№ по журналу а b c
1/(1+x)^1/2*5/exp(x) cos(x)*sin(x)**2 cos(x)**3+sin(x)

Также, учесть следующие факторы, влияющие на рабочие характеристики канала:

1. развитие пар кабеля 5 см на станционном конце - 3,8 дБ;

2. развитие пар кабеля 15 см на станционном конце - 11,6дБ;

3. скручивание кабеля с радиусом изгиба 1,2 см - 2,1 ДБ;

4. "изломленый" кабель - 2,4 дБ.

На соответствующую добавку затухания увеличить (f)

Расчёт затухания в оптической линии

Согласно стандарту TIA/EIA-568-B.1, суммарное предельно допустимое затухание рассчитывается как сумма затухания в самом кабеле, в коннекторах и коммутационных панелях:

(2)

где л – затухание в линии, дБ;

к – затухание в кабеле, дБ;

кон – затухание в коннекторах, дБ;

м – затухание в муфтах, дБ.

Затухание в кабеле рассчитывается по формуле:

(3)

где к – затухание в кабеле, дБ

– удельное затухание, дБ/км (измеряется в дБ/км, выбирается из таблицы 2);

l – длина линии, км.

Потери в коннекторах определяются из расчета 0,75 дБ на каждую пару коннекторов, а потери в каждой муфте нормированы величиной 0,3 дБ. Тогда с учетом этих величин, формула 2 имеет вид:

(4)

где: Nкон – количество коннекторов, шт. (задавать с клавиатуры);

Nм – количество муфт, шт. (задавать с клавиатуры).

 

 

Таблица 2

№ по журналу
cos(L)**3+sin(L)

 

Моделирование повреждений

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

Моделирование выполнить в Java c элементами ООП, исходные данные задавать в конструкторах.

Код программы.

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

import java.io.*;

public class zatyx{

double m,n,m1,n1,t1,l,t,a,Al,Nk,Nm,g,x,p,b,c,all,al,sum,pog1,pog2,pog3,pog4,a1,a2,a3,a4,a5,i,a11,a21,a31,a41,sum1;

double f=125; // частота сигнала

 

String f1(double d,double d1,double d2){

String as = "";

n=d2;

m=d1;

t=d;

l=t*3.22; //длина оптоволокна на этаж

x=2*t; //длина кабеля на этаж

i=l+x;

as += i+"\n";

return as;

}

 

double f11(){

t1=t;

return t1;

}

 

double f12(){

m1=m;

return m1;

}

 

double f13(){

n1=n;

return n1;

}

 

String f4(){

String qw ="";

sum=0;

for (int i=1;i<=t;i++){

p=2*i;

a=1/Math.pow(1+p,1/2)*5/Math.exp(p);//по варивнту

b=Math.cos(p)*Math.pow(Math.sin(p),2);//по варивнту

c=Math.pow(Math.cos(p),3)+Math.sin(p);//по варивнту

all=Math.abs(a*Math.pow(f,1/2)+b*f+c/Math.pow(f,1/2));//затухание на каждый ПК

sum=(sum+all);

qw += all +"\n";

}

return qw;

}

 

double f41(){

sum1=sum;

return sum1;

}

 

String f3(){

String we ="";

a=Math.cos(Math.pow(l,1/3))*Math.sin(l);

Al=Math.abs(a*l+0.75/2*Nk+0.3*Nm);

g=(Math.abs(Al+sum))/100;//общее затухание на этаж

we += g+"\n";

return we;

}

 

String f51(double d){

String nm1 ="";

t=d;

pog1=8*(t-1);

a1=pog1+g;

nm1 += a1 + "\n";

return nm1;

}

 

double f511(){

a11=a1;

return a11;

}

 

String f52(double d){

String nm2 ="";

t=d;

pog2=2.1*(t-1);

a2=pog2+g;

nm2 += a2 + "\n";

return nm2;

}

 

double f521(){

a21=a2;

return a21;

}

 

String f53(double d){

String nm3 ="";

t=d;

pog3=2.4*(t-1);

a3=pog3+g;

nm3 += a3 + "\n";

return nm3;

}

 

double f531(){

a31=a3;

return a31;

}

 

String f54(double d){

String nm4 ="";

t=d;

pog4=3.8*t;

a4=pog4+g;

nm4 += a4 + "\n";

return nm4;

}

 

double f541(){

a41=a4;

return a41;

}

 

String f55(){

String nm5 ="";

a5=pog4+pog1+pog2+pog3+g;

nm5 += a5 + "\n";

return nm5;

}

}