Знакомство с объектно-ориентированным языком программирования
Содержание:
Введение
Моя текущая работа связана с удаленными подключениями внутри доменной сети, а компьютерная грамотность пользователей часто оставляет желать лучшего.
Конечно, можно написать 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#.
В программе, упростившей мне взаимодействие с пользователями, реализованы все изначально поставленные задачи:
- Программа запускается при включении компьютера. (Данная возможность реализована добавлением программы в автозапуск компьютера);
- Программа сворачивается в «трей» панели задач windows при нажатии на кнопку «свернуть». Кроме того, добавлена собственная узнаваемая иконка – теперь пользователю проще объяснить, на что нужно нажать;
- По нажатию левой кнопкой мыши на иконку программы - выскакивает уведомление, отображая «имя компьютера» и «IP- адрес»;
- При нажатии правой кнопкой мыши – появляется «контекстное меню» с кнопкой «Open» для открытия главной формы программы;
В последующем, можно будет дополнить контекстное меню программы другими командами. Например, можно реализовать функцию для подачи электронной заявки или для открытия чата со специалистом технической поддержки;
Список использованной литературы
- Биллиг, В.А. Основы объектного программирования на C#: Учебное пособие / В.А. Биллиг, - М.: Интернет-Университет Информационных Технологий (ИНТУИт), Вузовское образование, 2017. – 583 с.
- Биллиг, В.А. Основы программирования на С#: Учебное пособие / В.А. Биллиг, - М.: Интернет-Университет Информационных Технологий (ИНТУИт), 2016. – 574 с.
- Котов, О.М. Язык С#. Краткое описание и введение в технологии программирования: Учебное пособие / О.М. Котов, - г. Екатеринбург: Уральский федеральный университет, 2014. – 208 с.
- Марченко, А.Л. Основы программирования на С# 2.0: Учебное пособие / А.Л. Биллиг, - М.: Интернет-Университет Информационных Технологий (ИНТУИт), Вузовское образование, 2017. – 552 с.
- Павловская, Т.А. Программирование на языке высокого уровня С# : Учебное пособие / Т.А. Павловская, - М.: Интернет-Университет Информационных Технологий (ИНТУИт),2016. - 254 с.
- Состав и свойства вычислительных систем. Информационное и математическое обеспечение вычислительных систем
- Разработка регламента выполнения процесса «Расчет заработной платы» (Основы учета заработной платы)
- «Процедуры несостоятельности (банкротства)»
- Аналитические регистры по налогу на прибыль (Правовая характеристика налога на прибыль)
- Нотариат и его роль в защите гражданских прав и охраняемых законом интересов(Понятие, сущность и особенности российского нотариата)
- Предмет и метод предпринимательского права, а также принципы предпринимательского права
- Финансовая политика и ее реализация в РФ(Теоретические основы финансовой политики государства)
- Налог на добавленную стоимость (Теоретическая характеристика налога на добавленную стоимость)
- Управление конфликтами в сфере органов государственной региональной власти (Понятие и содержание конфликтов)
- "История и развитие средств вычислительной техники"
- Понятие и виды ценных бумаг
- Аналогия в уголовном праве ее виды и значение