Итак, создадим новый проект. Это можно сделать либо кликнув по ссылке “Start a New Project” в окне приветствия, либо в меню “Файл” -> “Новый проект”. По умолчанию выбран “Консольный проект”. Так как это наше первое приложение - его и выбираем. В качестве названия я ввел “hello”, название решения выставилось автоматически.
После этого появится диалог “Project Features”. Пока там можно ничего не выбирать (ну, или “Unix integration” наконец :) ). Кликаем “ОК” - и код минимального приложения создан:
Допишем чуть-чуть кода, чтобы наше приложение еще и читало какие-нибудь данные из консоли и выводило ткуда что-то. Код заменим на:
// Main.cs created with MonoDevelop
// User: dxp at 20:25 Z03.09.2007
// project created on 03.09.2007 at 20:25
using System;
namespace hello
{
class Student{
private string Name, Group;
private sbyte Age;
public void AddToUniversity(string Name, string Group, sbyte Age)
{
this.Name = Name;
this.Group = Group;
this.Age = Age;
}
public void Write()
{
Console.WriteLine(
"\nYour name is {0}\nYou in {1} group\nand your age is {2} :)",
this.Name, this.Group, this.Age
);
}
}
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Hello! What is your name?");
Student Me = new Student();
string par1 = Console.ReadLine();
Console.WriteLine("OK. How old are you?");
sbyte par2 = sbyte.Parse( Console.ReadLine() );
Console.WriteLine("And what is your group?");
string par3 = Console.ReadLine();
Me.AddToUniversity(par1, par3, par2);
Me.Write();
Console.ReadKey();
}
}
}
После этого сохраняем файл (тандартный хоткей Ctrl+S - рабочий) и компилируем программу. Это можно сделать либо при помощи меню “Проект” -> “Простроение hello” / “Построение решения”, либо при помощи соответствующей кнопки на панели инструментов, либо ещё удобнее - по клавише F7. После этого в журнале построения должно появиться сообщение об успешной сборке.
Как видно, MonoDelvelop вполне функциональная и удобная среда. В ней уже можно с комфортом разрабатывать приложения. Порадовала относительно хорошая русская локализация - даже сообщения компилятора выводятся на русском языке. Большое количество настроек порадует любого девелопера. Также среда может помочь создать архив с новоразработанным приложением. Причём, сделать как версию с исходными кодами, так и с бинарными файлами. Отучают нас от консоли, балуют! :)
Ещё одной приятной фишкой среды было автодополнение функций. При введении символа “.”(точка) после объекта какого-нибудь класса во всплывающем окошке отображаются все методы и свойства этого класса, будь то встроенный или только что написанный класс. Причём, можно использовать клавиши стрелок для навигации по этому списку и по каждой функции будет отображено краткое описание (если таковое имеется). Также можно продолжать вводить имя нужной функции с клавиатуры - тогда поиск в окне-подсказке будет совершён автоматически:
В целом эта IDE оставляет приятные ощущения. И это не смотря на очень раннюю версию (0.15). Уже виднеются кроссплатформенные конкуренты Visual Studio от MS! :) Но некоторые жизненно важные возможности пока не реализованы. Например, отладка. Если нужно написать небольшое приложение - то можно его написать и без отладки. Но писать серьёзные коммерческие приложения в этой среде пока будет трудновато. Остаётся лишь надеяться, что разработчики не заставят нас долго ждать и уже в ближайших версиях пошаговая отладка появится.
Теперь запустим нашу программу. Если сделать это при помощи кнопки “Запустить” (F5), то программа обругает нас, мол “Unhandled Exception: System.ArgumentNullException: Argument cannot be null…” Это происходит потому, что в поле “Возраст” мы должны были ввести число, а программа автоматически подставила значение null.
Чтоб ощутить, что мы написали реально рабочее приложение запустим его вручную. Для этого нужно перейти в каталог проекта. Потом в нем в каталог ./bin/Debug/. И в этом каталоге уже будет лежать наше готовое кроссплатформенное приложение. Можем запустить его при помощи mono и посмотреть результат:
Как видите, приложение работает :) Теперь вернёмся к исходному коду. В нём показаны почти все основные принципы ООП:
При написании данного материала были использованы:
RUSSIAN
russian tools console linux c#
Dialogue & Discussion
Ins
Wednesday, September 5th, 2007, 02.02pm
У меня комментарий немного не в тему будет ;-) Честно признаюсь, что я не сильно хорошо разбираюсь в кроссплатформенном программировании, но немного разбираюсь в программировании вцелом. Вот эта фраза:
Полиморфизм здесь тоже не показан. Полиморфизм строится именно на методах позднего связывания (виртуальных) и заключается в том, что перекрытый в потомке виртуальный метод заставляет объект вести себя по-другому, несмотря на то, что метод имеет то же имя. Полиморфизм невозможен без наследования, следовательно, в данном примере также не показан. Классический пример полиморфизма (на Delphi)
type TFigure = class private FName: String; public function GetName: String; virtual; abstract; end; TCircle = class(TFigure) public function GetName: String; override; end; TSquare = class(TFigure) public function GetName: String; override; end; . . . function TCircle.GetName: String; begin Result:='Окружность'; end; function TSquare.GetName: String; begin Result:='Квадрат'; end;
Одноименные методы разных классов выполняют различные действия, в результате чего родственные объекты ведут себя по-разному. Это и есть полиморфизм.
Leave a comment