Объявление одномерного массива и задание его начальных значений, при   //этом размер массива автоматически будет равен 4. 14 страница



Docctl = Doc.getCurrentController()

'получение ссылки на форму третьего листа

oForm = Doc.DrawPages(2).Forms.getByName("Форма")

'получение ссылку на текстовое поле, при этом мы не получаем все свойства объекта

oControl = oForm.getByName("Текстовое поле 1")

'получение ссылки на объект контроллер текстового поля

'работа с объектом как с типичным объектом в диалоге

objtext = Docctl.getControl(oControl)

'задание цвета текста текстового поля

objtext.Model.TextColor = rgb(255,0,0)

'если добавлена пустая строка то указывается слово Строка

'попробуйте учесть если в строке только одни пробелы

if objtext.Text = "" then

objtext.Text = "Строка"

end if

'получение ссылки на поле со списком

oControl = oForm.getByName("Поле со списком 1")

'получение объекта контроллера выпадающего списка

objsp1 = Docctl.getControl(oControl)

oControl = oForm.getByName("Список 1")

'получение объекта контроллера списка

objsp2 = Docctl.getControl(oControl)

'добавление в конец списка введенной строки

objsp1.addItem(objtext.text,objsp1.itemCount)

'установка выбранной видимой строки в выпадающем списке

objsp1.Text = objtext.text

'добавление в конец списка введенной строки

objsp2.addItem(objtext.text,objsp2.itemCount)

end sub

 

8.13. Элемент Счетчик

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

 

8.14. Самостоятельное задание

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

Вариант 1.

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

Вариант 2.

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

Вариант 3.

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

Вариант 4.

Продажа одежды.

Вариант 5.

Продажа спортивных товаров.

Вариант 6.

Продажа продуктов питания.

Вариант 7.

Продажа напитков.

Вариант 8.

Регистрация данных о физических лицах.

Вариант 9.

Регистрация данных о фирмах.

Вариант 10.

Продажа автомобилей.

 

9 Изучение Java

Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем, приобретённой компанией Oracle). Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры. Дата официального выпуска — 23 мая 1995 года.

Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

Достоинство подобного способа выполнения программ — в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.

Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. В последнее время был внесен ряд усовершенствований, которые несколько увеличили скорость выполнения программ на Java:

* применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,

* широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,

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

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.

Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.

 

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

Java многое взял от языка С++ и может считаться его потомком. Но Java создавался как полностью платформо-независимый язык, в отличие от C или С++, языков во многом платформо-зависимых, позволяющих использовать системные функции отличающиеся для различных систем. Язык java получил распространение при создании сетевых приложений, на мобильных устройствах благодаря обеспечению безопасности, простоте, устойчивости, переносимости. Язык достаточно прост в освоении, при этом использует полностью объектно-ориентированную парадигму программирования, то-есть программа реализуется в виде взаимодействующий объектов являющимися реализацией какого то класса, взаимодействие может осуществляться путем возникновения событий с каждым из объектом, один объект может инициировать событие в другом объекте, основными принципами объектно-ориентированного подхода является — инкапсуляция, наследование и полиформизм.

 

9.1. Три принципа ООП.

Инкапсуляция, наследование и полиморфизм.

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

Инкапсуляция объединение в классе (объекте) данных и процедур (методов) обработки этих данных. При этом данные объявленные в классе (объекте) могут быть защищены от внешнего доступа или доступа к этим данным с помощью методов, не включенных в данный класс.

 

 

Пример.

 

class figure

{

public String description ; //доступная переменная строкового типа

private String name; - //скрытая переменная строкового типа

private int dimension; //скрытая переменная целого типа

public void setname(String s) {name =s;} //метод для задания переменной name

public void setdim(int dim) {dimension = dim;};

public String getname() {return name;}; //метод для доступа к переменной name

public int getdim() {return dimension;};

figure() { dimension = 2;};//конструктор без параметров

figure(String sn) { setname(sn);};//конструктор с параметрами

}

 

Мы объявили класс, который описывает класс объектов – геометрические фигуры в различных пространствах (одномерное, двумерное, трехмерное и т.д.).

 

В классе объявлены данные – строка указывающая имя фигуры – name, пространство в котором определяется фигура – целого типа – dimension, и описание фигуры – description, строкового типа;

При этом для каждого из типов данных и методов установлено специальное определение public или private, еще может использоваться специальное слово protected.

Public – означает, что данные доступны из любого другого класса.

Private – доступно только из методов данного класса.

Protected – Доступно только из данного класса и классов наследников данного класса.

Тем не менее, доступ к переменным указанным в классе figure мы имеем через специально написанные методы, которые мы объявили как Public, напрямую мы не сможем изменять данные, но через методы это возможно. Зачем это нужно, в некоторых случаях бывает необходимо проверить данные на целостность или на соответствие определенным условиям, например, пусть пространства фигур не могут быть больше 3, тогда можно написать код

public void setdim(int dim) {

dimension = dim;

if(dimension>3) dimension =3;

};

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

Такие функции доступа к переменным организуют интерфейс доступа или интерфейс взаимодействия с данными объекта или сами объектом. Например, машина или компьютер, где в качестве интерфейса выступает операционная система, используя операционную систему вы ограничены только теми функциями, которые она предоставляет (это не касается MS DOS). Или в машине вы используете коробку передач для переключения скоростей, вы не можете повлиять на скоростной режим из других классов и объектов, скажем через выключатели стеклоочистителей, или не можете это сделать каким-то еще способом.

Также в нашем классе есть специальные методы называемые конструкторами, конструкторы необходимы для выполнения определенный действий, когда объект создается и размещается в памяти. В Java все объекты создаются в общей памяти, и размещаются там с помощью оператора new. Затем мы можем создать ссылку на какой-то объект присвоив переменной того же класса, что и создаваемый объект.

Например

figure fig,fig3,fig5; //объявляем переменные типа figure

fig = new figure(); // создаем объект figure и присваиваем ссылку на него переменной fig

figure fig1, kkfiggg; /объявляем переменные типа figure

fig1 = new figure(“Circle”); //создаем объект figure с помощью другого конструктора

fig3 = fig; // создаем еще одну ссылку на первый объект

fig5 = fig; // создаем еще одну ссылку на первый объект

kkfiggg = fig1; // создаем еще одну ссылку на второй объект

Теперь у нас несколько переменных ссылается на один и тот же объект.

В java не обязательно удалять объект из памяти, когда он уже не нужен, специальный сборщик мусора делает это сам, когда все ссылки на объект теряются. Обычно ссылка действует в локальной области своего объявления – ограниченной фигурными скобками {}. Например, локальной областью является – тело цикла, метод, условный оператор, класс.

Наследование.

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

Например пусть от класса фигуры мы создали подклассы – двумерные и трехмерные.

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

Пример класса двумерной фигуры.

 

class fig2d extends figure   

{

 

       public double square() {return 0;};

       public double perimeter() {return 0};        

           

}

 

 

class circle extends fig2d   

{

       double radius;

double x,y;

       public double square() {return Math.PI*radius*radius;};

       public double perimeter() {return 2*Math.PI*radius;};    

       circle() {setname("Circle"); setdim(2); description = "This is circle"; }

 

           

class square extends fig2d  

{

       double a;

double x,y;

       public double square() {return a*a;};

       public double perimeter() {return a*4;};   

       square() { setname("Square"); setdim(2); };

}

 

 

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

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

 

public static void main(String[] args) {

                   // TODO Auto-generated method stub

 

                   figure fig = new figure(); //объект фигура

                   fig2d ff = new fig2d(); // j,объект фигура на плоскости

                   fig2d[] figures = new fig2d[5]; // пять фигур на плоскости

//здесь объявили массив и создали обхект массив из пяти ссылок типа fig2d

   figures[0] = new circle(); //конкретизируем фигуры ссылаясь на конкретный объект

   figures[1] = new square();

       

   for(int i=2;i<5;i++)

   figures[i] = new circle();

               

   figures[1].description = "Circle";

       

for(int i=0;i<5;i++)

System.out.println(figures[i].getname()+" "+figures[i].description+" "+figures[i].perimeter());

}

 

В описанной выше программе приведено свойство полиморфизма. В качестве интерфейса в классе «двумерная фигура» у нас заданы два метода общие для всех классов замкнутых двумерных фигур – периметр, площадь. Для конкретных реализаций классов фигур (квадрат и круг) у нас эти методы переписаны – круг и квадрат реализуют расчет одного и того же свойства но различными способами применительно к конкретным фигурам. Таким образом, полиморфизм это возможность конкретизировать общее свойство присущее различным объектам. Например многие живые существа имеют свойство – бегать, но каждое существо бегает по своему, мы реализуем метод бегать, который будет реализовать показ бега или расчет бега для какого то конкретного животного, для каждого животного будет написана своя процедура, но будет иметь одно и то же название или один и тот же интерфейс для того, чтобы реализовать процесс. Или, например, существует множество классов и видов автомобилей, но все они имеют газ и тормоз, реализация механизма ускорения и торможения в этих машинах может быть разная, но интерфейс для реализации один и тот же – нажатие определенной педали. Также мы можем написать две программы, которые имеют одни и те же клавиши для управления чем-либо, но управление они проводят по-разному или функции, реализующиеся при этом делаются по-разному, хотя их цель одна и та же.

 

9.2. Реализация программы на Java

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

Компиляция текстового файла с кодом на java может быть проведена с помощью утилиты javac, предварительно сохраняете файл с текстом программы с расширением *.java. В результате компиляции получается файл с расширением *.class, запускаете данный файл с помощью машины java. Рассмотрим данные операции.


Дата добавления: 2019-01-14; просмотров: 276; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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