Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

Введение

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

Конечно, можно написать bat-файл с текстовой командой «ipconfig», однако этот файл должен находиться на рабочем столе или в любом другом доступном месте так, чтобы пользователь не мог случайно его удалить. Данным способом можно было бы обойтись при максимальном количестве компьютеров в сети – 20 – 30 шт., но компьютеров в сети порядка 500 шт.

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

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

  • Программа должна запускаться при включении компьютера;
  • Программа должна сворачиваться в «трей» панели задач windows при нажатии на кнопку «свернуть»;
  • По нажатию левой кнопкой мыши на иконку программы - должно выскакивать уведомление, отображая «имя компьютера» и «IP- адрес»;
  • При нажатии правой кнопкой мыши – должно появляться «контекстное меню» с кнопкой «Open» для открытия главной формы программы;

Что такое ООП?

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

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

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

C#, C++, Delphi, Java, Perl, PHP, Python, Visual Basic.NET.

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

Во-первых, код написанный на C# по моему мнению выглядит более проще, а во вторых многие более опытные программисты утверждают, что на C# код быстрее компилируется, а также проще отлаживать.

Подготовка проекта в Microsoft Visual Studio 2017

Скачиваем Visual studio Community 2017 с официального сайта (Рисунок 1).

Рисунок 1 – Сайт MS Visual studio

После установки, создаем новый проект (файл – новый – проект) (Рисунок 2).

Рисунок 2 – Параметры создаваемого проекта

После создания проекта, у нас открывается пустая форма (Рисунок 3).

Рисунок 3 – Пустая форма

Т.к. я этот проект переписываю второй раз, то уже знаю, какие нам понадобятся библиотеки (Листинг 1):

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

Листинг 1 – Используемые библиотеки.

Чтобы добавить их сразу, нужно в «Обозреватель решений» нажать правой кнопкой по нашей форме и выбрать команду «Перейти к коду» (Рисунок 4).

Рисунок 4 – Переход к коду

Процесс разработки приложения

Возвращаемся к форме и открываем панель элементов, и переносим элемент - «Label» в количестве 4 шт. на нашу форму и переименовываем (Рисунок 5).

Рисунок 5 – Форма с элементами «Label»

В первом столбике (Рисунок 5) у нас находятся 2 поля, которые будут являться заголовками, а во втором столбике находятся 2 поля, которые в последующем будут принимать значения.

Далее в панели элементов находим элементы - «NotifyIcon» и «contextMenuStrip», и также переносим на форму (Рисунок 6).

Рисунок 6 – элементы «NotifyIcon» и «contextMenuStrip»

«NotifyIcon» - Элемент, отвечающий за иконку в «трее» панели задач Windows.

«contextMenuStrip» - Элемент, отвечающий за выскакивание контекстного меню, при нажатии правой кнопки мыши на иконку в «трее» панели задач Windows, но сперва её нужно будет «привязать».

Для начала нужно разобраться с иконкой в «трее». Во-первых, она должна быть легко узнаваемой и во-вторых нужного размера(32х32px). В моём случае это будет иконка пингвина. Для того, чтобы добавить эту иконку, нужно в свойствах элемента «NotifyIcon» найти поле «icon» и подгрузить туда нужную иконку в формате «.ico» (Рисунок 7).

Рисунок 7 – Добавление иконки

Для того, чтобы эту форму мы могли свернуть, нажмём на пустое место формы, заходим в «свойства», переключаемся на вкладку «события», ищем спойлер «макет» и два раза щелкаем по событию «resize». После чего у нас создаётся событие «Form1_Resize» (Рисунок 8).

Рисунок 8 – Событие для сворачивания в трей

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

private void Form1_Resize(object sender, EventArgs e)

{

if (WindowState == FormWindowState.Minimized)

{

// прячем наше окно из панели windows

this.ShowInTaskbar = false;

// делаем нашу иконку в трее активной

notifyIcon1.Visible = true;

}

}

Листинг 2 – Функция сворачивания в трей

На данном этапе у нас получился следующий код (Листинг 3).

namespace WindowsFormsApp1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Resize(object sender, EventArgs e)

{

if (WindowState == FormWindowState.Minimized)

{

// прячем наше окно из панели windows

this.ShowInTaskbar = false;

}

}

}

}

Листинг 3 – Код программы на данном этапе

Пришло время для контекстного меню. Для этого нужно перейти на вкладку с формой, нажать по элементу «contextMenuStrip», ввести наименование кнопки, например - «Open» (Рисунок 9).

Рисунок 9 – Элемент «contextMenuStrip»

После чего нажимаем на эту кнопку, заходим в «свойства», вкладка «события» и создаём новое событие по нажатию (Рисунок 10).

Рисунок 10 – Событие для кнопки Open

В созданной функции приводим код к такому виду, чтобы при нажатии на кнопку «Open» контекстного меню – открывалась форма (Листинг 4).

private void OpenToolStripMenuItem_Click(object sender, EventArgs e)

{

// возвращаем отображение окна в панели

this.ShowInTaskbar = true;

//разворачиваем окно

WindowState = FormWindowState.Normal;

}

Листинг 4 – Функция открытия формы

Теперь нужно реализовать отклик программы на нажатие левой и правой клавиши по иконке в трее, для этого заходим в свойства элемента «NotifyIcon», открываем вкладку «события» и создаём событие на клик мышки по иконке (Рисунок 11).

Рисунок 11 – Создание события по клику мышкой

В Открывшейся функции дописываем код, который определяет, по какой кнопке мыши был сделан щелчок. Если щелчок был сделан левой кнопкой мыши, то отобразить уведомление с именем компьютера и адресом, а если правой, то отобразить контекстное меню (Листинг 5).

private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Left)

{

// получаем Имя компьютера

string myHost = System.Net.Dns.GetHostName();

// получаем IP-адрес хоста

string myIP = System.Net.Dns.GetHostByName(myHost).AddressList[0].ToString();

// Выводим информационное сообщение, в котором отображается заголовок, имя компьютера и адрес

notifyIcon1.ShowBalloonTip(500, "Информация для подключения", " Имя ПК:" + myHost + "; Ваш IP:" + myIP, ToolTipIcon.Warning);

}

if (e.Button == MouseButtons.Right)

{

notifyIcon1.ContextMenuStrip = contextMenuStrip1;

}

}

Листинг 5 –Функция определения нажатия левой и правой кнопки мыши.

Теперь, чтобы информация отображалась не только в уведомлении, но еще и на форме - нажимаем по пустому месту в форме, заходим в «свойства», вкладка «события» и выбираем событие «load» под спойлером «поведение» (Рисунок 12).

Рисунок 12 – Событие для формы

В открывшейся функции дописываем практически тот же код, что и в уведомлении, которое выскакивает при нажатии левой кнопкой мыши на иконку (Листинг 5), только в этом случае присваиваем полученные значения к Label3 и Label4 (Листинг 6), которые мы создали изначально (Рисунок 5).

private void Form1_Load(object sender, EventArgs e)

{

// получаем имя компьютера

string myHost = System.Net.Dns.GetHostName();

// присваиваем текст к label3(Имя компьютера)

label3.Text = myHost;

// получаем IP-адрес хоста

string myIP = System.Net.Dns.GetHostByName(myHost).AddressList[0].ToString();

// присваиваем текст к label4(Адрес компьютера)

label4.Text = myIP;

}

Листинг 6 – Функция для заполнения формы

Результаты работы приложения

Так выглядит форма программы (Рисунок 13).

Рисунок 13 – Форма программы

При нажатии на кнопку «Свернуть», программа пропадает с панели задач и отображается только в «трее» (рисунок 14).

Рисунок 14 – Панель задач Windows

При нажатии правой кнопкой мыши по иконке в трее – отображается контекстное меню (Рисунок 15), при нажатии на кнопку «Open» открывается форма (Рисунок 13).

Рисунок 15 – Контекстное меню

При нажатии левой кнопкой мыши по иконке в трее – отображается уведомление (Рисунок 16).

Рисунок 16 – Уведомление в трее

Заключение

Опираясь на полученные знания при разработке этого, хоть и небольшого, приложения на Windows Forms - я приобрел новые знания, и познакомился с интерфейсом Microsoft visual studio 2017, а также с основами программирования на C#.

В программе, упростившей мне взаимодействие с пользователями, реализованы все изначально поставленные задачи:

  1. Программа запускается при включении компьютера. (Данная возможность реализована добавлением программы в автозапуск компьютера);
  2. Программа сворачивается в «трей» панели задач windows при нажатии на кнопку «свернуть». Кроме того, добавлена собственная узнаваемая иконка – теперь пользователю проще объяснить, на что нужно нажать;
  3. По нажатию левой кнопкой мыши на иконку программы - выскакивает уведомление, отображая «имя компьютера» и «IP- адрес»;
  4. При нажатии правой кнопкой мыши – появляется «контекстное меню» с кнопкой «Open» для открытия главной формы программы;

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

Список использованной литературы

  1. Биллиг, В.А. Основы объектного программирования на C#: Учебное пособие / В.А. Биллиг, - М.: Интернет-Университет Информационных Технологий (ИНТУИт), Вузовское образование, 2017. – 583 с.
  2. Биллиг, В.А. Основы программирования на С#: Учебное пособие / В.А. Биллиг, - М.: Интернет-Университет Информационных Технологий (ИНТУИт), 2016. – 574 с.
  3. Котов, О.М. Язык С#. Краткое описание и введение в технологии программирования: Учебное пособие / О.М. Котов, - г. Екатеринбург: Уральский федеральный университет, 2014. – 208 с.
  4. Марченко, А.Л. Основы программирования на С# 2.0: Учебное пособие / А.Л. Биллиг, - М.: Интернет-Университет Информационных Технологий (ИНТУИт), Вузовское образование, 2017. – 552 с.
  5. Павловская, Т.А. Программирование на языке высокого уровня С# : Учебное пособие / Т.А. Павловская, - М.: Интернет-Университет Информационных Технологий (ИНТУИт),2016. - 254 с.