Лабораторная работа по «Разработке программных приложений»
Автор: Lich • Сентябрь 10, 2019 • Лабораторная работа • 2,621 Слов (11 Страниц) • 444 Просмотры
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №5
по дисциплине «Разработка программных приложений»
Выполнили студенты группы ИКБО-08-17 Кукушкин Ю.А
Принял Захаров О. Н.
Работа представлена к защите «____»____________ 2019 г.
Москва 2019
Задание
Создать приложение, выводящее информацию RTTI для каждого узла дерева объектов, выводящее следующие данные:
1) Название класса
2) Название класса-предка
3) Область видимости класса
4) Название сборки, в которой класс определен
5) Публичный интерфейс класса:
А) список полей с типами
Б) список свойств с типами и указанием на наличие методов считывания и установки значения
В) список методов с типами возвращемых значений, названиями и типами аргументов
6) Определяемый классом интерфейс:
А) список полей с типами
Б) список свойств с типами и указанием на наличие методов считывания и установки значения
В) список методов с типами возвращемых значений, названиями и типами аргументов.
Для каждого элемента указать спецификатор области видимости. Если метод виртуальный, указать это, также указать класс, в котором находится реализация этого метода и класс, в котором он был впервые объявлен.
Дополнить схему классов информацией о членах (полях, методах и свойствах) каждого класса. Если виртуальный элемент впервые объявлен в классе, выделить его зеленым цветом, если виртуальный элемент переопределен — желтым. Невиртуальные элементы должны иметь черный цвет, переопределенные — красный.
Код программы
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;
using System.Reflection;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
RTTIRoot a = new RTTIRoot();
DumpObject(a);
RTTIClass1 s = new RTTIClass1();
DumpObject(s);
RTTIClass11 d = new RTTIClass11();
DumpObject(d);
RTTIClass12 f = new RTTIClass12();
DumpObject(f);
RTTIClass2 g = new RTTIClass2();
DumpObject(g);
RTTIClass21 h = new RTTIClass21();
DumpObject(h);
RTTIClass22 j = new RTTIClass22();
DumpObject(j);
}
public class RTTIRoot
{
internal int A;
public int PA;
public int Prop1 { get; set; }
internal void DoIt() { }
public virtual void DoThat() { }
}
internal class RTTIClass1 : RTTIRoot
{
private int B;
public string C;
internal new void DoIt() { }
public override void DoThat() { }
}
private class RTTIClass11 : RTTIClass1
{
internal float D;
private float PropD { get { return D; } }
internal new void DoIt() { }
}
...