Главная страница

Разработка онлайн-органайзера с использованием объектно-ориентированного подхода. Исследование 1 Методология проектирования информационных систем


Скачать 1.64 Mb.
НазваниеИсследование 1 Методология проектирования информационных систем
АнкорРазработка онлайн-органайзера с использованием объектно-ориентированного подхода
Дата25.05.2022
Размер1.64 Mb.
Формат файлаrtf
Имя файла132640.rtf
ТипИсследование
#550069
страница10 из 19
1   ...   6   7   8   9   10   11   12   13   ...   19




3.2 Разработка функциональной части клиентского приложения



Для разработки функциональной части клиентского приложения в данном дипломном проекте был использован язык C# (.NET Framework 3.0) и IDE (интегрированная среда разработки – Integrated Development Environment) Microsoft Visual Studio 2008.

Язык C# является наиболее известной новинкой в области создания языков программирования. В отличие от 60-х годов XX века - периода бурного языкотворчества - в нынешнее время языки создаются крайне редко. За последние 15 лет большое влияние на теорию и практику программирования оказали лишь два языка: Eiffel, лучший, по моему мнению, объектно-ориентированный язык, и Java, ставший популярным во многом благодаря технологии его использования в Интернете и появления такого понятия как виртуальная Java-машина. Чтобы новый язык получил признание, он должен действительно обладать принципиально новыми качествами. Языку C# повезло с родителями. Явившись на свет в недрах Microsoft, будучи наследником C++, он с первых своих шагов получил мощную поддержку. Однако этого явно недостаточно для настоящего признания достоинств языка.

Создателем языка является сотрудник Microsoft Андреас Хейлсберг. Он стал известным в мире программистов задолго до того, как пришел в Microsoft. Хейлсберг входил в число ведущих разработчиков одной из самых популярных сред разработки - Delphi. В Microsoft он участвовал в создании версии Java - J++, так что опыта в написании языков и сред программирования ему не занимать. Как отмечал сам Андреас Хейлсберг, C# создавался как язык компонентного программирования, и в этом одно из главных достоинств языка, направленное на возможность повторного использования созданных компонентов. Из других объективных факторов отметим следующие:

  • C# создавался параллельно с каркасом Framework .Net и в полной мере учитывает все его возможности - как FCL, так и CLR;

  • C# является полностью объектно-ориентированным языком, где даже типы, встроенные в язык, представлены классами;

  • C# является мощным объектным языком с возможностями наследования и универсализации;

  • C# является наследником языков C/C++, сохраняя лучшие черты этих популярных языков программирования. Общий с этими языками синтаксис, знакомые операторы языка облегчают переход программистов от С++ к C#;

  • сохранив основные черты своего родителя, язык стал проще и надежнее. Простота и надежность, главным образом, связаны с тем, что на C# хотя и допускаются, но не поощряются такие опасные свойства С++ как указатели, адресация, разыменование, адресная арифметика;

  • благодаря каркасу Framework .Net, ставшему надстройкой над операционной системой, программисты C# получают те же преимущества работы с виртуальной машиной, что и программисты Java. Эффективность кода даже повышается, поскольку исполнительная среда CLR представляет собой компилятор промежуточного языка, в то время как виртуальная Java-машина является интерпретатором байт-кода;

  • мощная библиотека каркаса поддерживает удобство построения различных типов приложений на C#, позволяя легко строить Web-службы, другие виды компонентов, достаточно просто сохранять и получать информацию из базы данных и других хранилищ данных;

  • реализация, сочетающая построение надежного и эффективного кода, является немаловажным фактором, способствующим успеху C#. [9]

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

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

Проиллюстрировать использование C# в данном дипломном проекте можно, приведя пример доработки главной формы (закладки «Заметки») функциональным интерфейсом.


3.2.1 Обработка событий формы, создание новых окон


Функция отвечающая событию Click по кнопке «Добавить», открывает форму добавления/изменения заметки :
private void NoteAddButtonClick(object sender, System.Windows.RoutedEventArgs e)

{NoteAddEditWin NoteWin = new

NoteAddEditWin(true, null);

NoteWin.ShowDialog();}
Функция отвечающая событию Click по кнопке «Изменить»:
private void NoteEditButtonClick(object sender, System.Windows.RoutedEventArgs e)

{if (NoteListBox.SelectedIndex != -1)

{NoteAddEditWin NoteWin = new NoteAddEditWin(false, Postgres.Notes[NoteListBox.SelectedIndex]);

NoteWin.ShowDialog();}}

3.2.2 Связывание данных (DataBinding)


Передача данных, полученных в ходе выполнения программы, элементам управления созданным при помощи Microsoft Expression Blend на языке XAML, осуществляется с помощью связывания данных (Data Binding). Перед связывание необходимо получить требуемые данные от базы данных : Получения данных о заметках пользователя, выполняется при переходе на TabItem относящийся к заметкам:
private void TabControlSelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)

{string comstr = "SELECT \"Get_usr_notes(‘\" + uid.ToString() + "’);";

NpgsqlCommand command = new NpgsqlCommand(comstr, Postgres.PSqlConnection);

try

{NpgsqlDataReader dr =command.ExecuteReader();

while (dr.Read())

Postgres.Notes.Add(new Postgres.Note((string)dr.GetValue(0), (string)dr.GetValue(1), (DateTime)dr.GetValue(2), (string)dr.GetValue(3)));}

catch (NpgsqlException ex)

{MessageBox.Show(ex.ToString());}

NoteListBox.DataContext = Postgres.Notes;}
Выделенный фрагмент кода отвечает за привязку данных из Postgres.Notes к элементу управления NoteListBox. Структура поля DataContext должна совпадать со структурой привязываемых данных, в противном случае возникнет ошибка компиляции. Структура поля DataContext описывается в XAML-коде и фрагменты, отвечающие за описание структуры, приведены ниже:











Код отвечающий за привязку данных в C#:

3.2.3 Провайдер баз данных PostgreSQL Npgsql 2.0.8


Работа с базами данных на языке C# осуществляется через провайдеры, в данном дипломном проекте использован провайдер Npgsql 2.0.8. Всё «общение» с базой данных происходит через SQL-запросы. Сначала необходимо установить соединение с базой данных, для этого используется формализованная строка подключения. Структура строки следующая: "Server=<имя или адрес сервера базы данных (для локального – localhost)>; Port=<номер порта подключения к базе данных>; User Id=<имя пользователя базы данных>; Password=<пароль пользователя>;Database=<имя базы данных>;".

Затем формируется SQL-запрос, который будет передан серверу. Возможны различные варианты выполнения запросов :

  • (int)command.ExecuteScalar(); - подходит, если тип возвращаемого значения

  • command.ExecuteReader();

  • command.ExecuteNonQuery();

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

/// Default constructor. Sets connection to DB.

///


public EnterWin()

{this.InitializeComponent();

Postgres.PSqlConnection = new

NpgsqlConnection(Postgres.ConnString);

try

{Postgres.PSqlConnection.Open();}

catch (NpgsqlException ex)

{MessageBox.Show(ex.ToString());}}

///

/// "Вход" button click event.

///


private void Enter_Button_Click(object sender,

RoutedEventArgs e)

{string comstr = "SELECT \"Login_user\"('" +

Login_TextBox.Text.ToLower() + "','" + Postgres.MD5Hash(Pass_TextBox.Password) + "');";

NpgsqlCommand command = new NpgsqlCommand(

comstr, Postgres.PSqlConnection);

try

{int uid = (int)command.ExecuteScalar();

if (uid == -1)

{new YesNoWin("Ошибка ввода.",
1   ...   6   7   8   9   10   11   12   13   ...   19


написать администратору сайта