#4 Gray Hat C#. Руководство для хакера по созданию и автоматизации инструментов безопасности. Связывание всего вместе с помощью метода Main().
Здравствуйте, дорогие друзья.
Мы можем использовать наши новые классы для тестирования еще нескольких функций C#. Давайте напишем новый метод Main(), чтобы продемонстрировать эти новые классы, как показано в листинге 1-7.
Чтобы использовать классы PoliceOfficer и Firefighter, мы должны создать их экземпляры, используя конструкторы, которые мы определили в соответствующих классах. Сначала мы делаем это с классом Firefighter [1], передавая конструктору класса имя Джо Кэррингтона и возраст 35 лет, и присваивая новый класс переменной firefighter. Мы также установили свойство PensionAmount пожарного равным 5000 [2]. После настройки пожарного мы передаем объект методам PrintNameAndAge() и PrintPension() [6].
Обратите внимание, что метод PrintNameAndAge() принимает в качестве аргумента интерфейс IPerson, а не класс Firefighter, PoliceOfficer или PublicServant. Когда класс реализует интерфейс, Вы можете создавать методы, принимающие этот интерфейс (в нашем случае IPerson), в качестве аргумента. Если Вы передаете IPerson методу, метод имеет доступ только к тем свойствам или методам, которые требуются интерфейсу, а не ко всему классу. В нашем примере доступны только свойства Name и Age — это все, что нам нужно для метода.
Аналогично, метод PrintPensionAmount() принимает PublicServant [7] в качестве аргумента, поэтому он имеет доступ только к свойствам и методам PublicServant. Мы можем использовать ключевое слово C# is, чтобы проверить, принадлежит ли объект к определенному типу класса, поэтому мы делаем это, чтобы проверить, является ли наш государственный служащий классом Firefighter [8] или PoliceOfficer [9], и мы печатаем сообщение в зависимости от того, какое оно.
Мы делаем то же самое для класса «PoliceOfficer», что и для класса «Firefighter», создавая новый класс с именем Jane Hope и возрастом 32 года; затем мы установили ее пенсию в размере 5500, а ее свойство HasEmergency [3] — в значение true. После вывода имени, возраста и пенсии [4] мы вызываем метод DriveToPlaceOfInterest() офицера [5].
Запуск метода Main()
Запуск приложения должен продемонстрировать, как классы и методы взаимодействуют друг с другом, как показано в листинге 1-8.
1 2 3 4 5 6 7 |
$ ./ch1_the_basics.exe Name: Joe Carrington Age: 35 Pension of firefighter: 5000 Name: Jane Hope Age: 32 Pension of officer: 5500 |
Как видите, имена, возраст и пенсии государственных служащих напечатаны на экране, как и ожидалось!
На этом все. Всем хорошего дня!