У вас вопросы?
У нас ответы:) SamZan.net

Вариант 25 Cпутник

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

Отчёт по лабораторной работе №7.

Вариант 25 - Cпутник.

Цель:  Ознакомиться с концепцией сборок в .NET Framework.

Постановка задачи:

     1.  Дополнить диаграмму классов UML.  

2.  Изучить способы задания пространства имён в C#.

  1.  Изучить назначение и использование ключевого слова  using.
  2.  Изучить способы задания псевдонимов в C#.
  3.  Изучить использование модификаторов доступа для сборок.
  4.  Оформить всё приложение в DLL.

UML диаграмма классов:

Описание программного модуля:

using System;

using System.Text;

using SatInfo = lab7.SatInfoStruct.SatInfo;

namespace lab7

{

 //абстрактный класс солнечной системы

 abstract class SolarSystem

{

 public abstract void GetName(out string name);

 public abstract string OpenYear

 {

  get;

  set;

 }

}

 /// <summary>

 /// Структура с информацией о периоде и первооткрывателе спутника

 /// </summary>

 namespace SatInfoStruct

{

 struct SatInfo

 {

  /// <summary>

  /// Период спутника

  /// </summary>

  private uint period;

  /// <summary>

  /// Первооткрыватель

  /// </summary>

  private string founder;

  /// <summary>

  /// Конструктор 

  /// </summary>

  public SatInfo(uint period, string founder)

  {

   this.period = period;

   this.founder = founder;

  }

  public uint Period

  {

   get { return period; }

   set { period = value; }

  }

  public string Founder

  {

   get { return founder; }

   set { founder = value; }

  }

  public static bool operator ==(SatInfo si1, SatInfo si2)

  {

   if (System.Object.ReferenceEquals(si1, si2))

    return true;

   if (((object)si1 == null) || ((object)si2 == null))

    return false;

   return (si1.period == si2.period &&

    si1.founder == si2.founder);

  }

  public static bool operator !=(SatInfo si1, SatInfo si2)

  {

   return !(si1 == si2);

  }

 }

}

 /// <summary>

 /// Перечисление направления движения спутника

 /// </summary>

 enum Direction : int

{

 forward,

 reverse

};

 /// <summary>

 /// Класс, описывающий направление вращения спутника относительно планеты

 /// </summary>

 class Spin

{

 Direction dir;

 public Spin()

 {

  //System.Console.WriteLine("Constructor Spin() called");

 }

 public Spin(Direction dir)

 {

  this.dir = dir;

  //System.Console.WriteLine("Constructor with parameters Spin() called");

 }

}

 /// <summary>

 /// Перечисление размера спутника

 /// </summary>

 enum SatSize

{

 SMALL,

 MEDIUM,

 LARGE

};

 namespace Satellites

{

 /// <summary>

 /// Summary description for Satellite

 /// </summary>

 class Satellite : SolarSystem

 {

  //перегруженный оператор явного приведения типов

  public static explicit operator Spin (Satellite sat)

  {

   Console.WriteLine("Вызван оператор явного приведения типов ");

   Spin spn = sat.GetSpin();

   return spn;

  }

  //перегруженный оператор неявного приведения типов

  public static implicit operator Satellite(Spin spn)

  {

   Console.WriteLine("Вызван оператор неявного приведения типов ");

   Satellite satl = new Satellite("Triton", "1846", 1352, 2.061);

   satl.SetSpin(spn);

   return satl;

  }

  public Spin GetSpin()

  {

   return spin;

  }

  public void SetSpin(Spin spn)

  {

   spin = spn;

  }

  protected SatSize satSize;

  protected Spin spin;

  /// <summary>

  /// Название спутника

  /// </summary>

  protected string name;

       

  /// <summary>

  /// Год открытия спутника

  /// </summary>

  protected string openYear;

  /// <summary>

  /// Радиус спутника

  /// </summary>

  protected uint   radius;

  /// <summary>

  /// Плотность спутника

  /// </summary>

  protected double  density;

  /// <summary>

  /// Космическая система

  /// </summary>

  public static string system;

  protected SatInfo sInfo;

  public void GetSatInfo(ref SatInfo sInfo)

  {

   if(sInfo!=this.sInfo)

    sInfo = this.sInfo;

  }

  public void SetSatInfo(SatInfo sInfo)

  {

   if (sInfo != this.sInfo)

    this.sInfo = sInfo;

  }

  public override void GetName(out string name)

  {

   name = this.name;

   Console.WriteLine("Called Satellite.GetName(...)");

  }

  /// <summary>

  /// Конструктор по умолчанию

  /// </summary>

  public Satellite()

  {

   spin = new Spin();

   //    System.Console.WriteLine("Satellite Default constructor called");

  }

  /// <summary>

  /// Статический Конструктор 

  /// </summary>

  static Satellite()

  {

   system = "Solar System";

   //  System.Console.WriteLine("Satellite Static constructor called");

  }

  /// <summary>

  /// Параметризованный конструктор

  /// </summary>

  public Satellite(string name, string openYear, uint radius, double density)

           

  {

   // System.Console.WriteLine("Satellite Constructor with parameters called");

   this.name = name;

   this.openYear = openYear;

   this.radius = radius;

   this.density = density;

   spin = new Spin(Direction.reverse);

           

  }

  /// <summary>

  /// Деструктор

  /// </summary>

  ~Satellite()

  {

   //System.Console.WriteLine("Destructor called");

  }   

  /// <summary>

  /// Свойство чтения-записи названия спутника

  /// </summary>

  public virtual string Name

  {

   get { Console.WriteLine("Called Satellite.Name "); return name; }

   set { name = value; }

  }

     

  /// <summary>

  /// Свойство чтения-записи года открытия спутника

  /// </summary>

  public override string OpenYear

  {

   get { return openYear; }

   set { openYear = value; }

  }

  /// <summary>

  /// Свойство чтения-записи радиуса спутника

  /// </summary>

  public uint Radius

  {

   get { return radius; }

   set { radius = value; }

  }

  /// <summary>

  /// Свойство чтения-записи размера спутника

  /// </summary>

  public SatSize Satsize

  {

   get{ return satSize;}

   set { satSize = value; }

  }

  /// <summary>

  /// Свойство чтения плотности спутника

  /// </summary>

  public double Density

  {

   get { return density; }

  }

  /// <summary>

  /// Функция вычисления массы спутника

  /// </summary>

  public double Mass()

  {

   return 4.0*3.14 * Math.Pow(radius,3.0) * density / 3.0;

  }

  /// <summary>

  /// Функция вычисления площади спутника

  /// </summary>

  public double Area()

  {

   return 4.0 * 3.14 * Math.Pow(radius, 2.0);

  }

  /// <summary>

  /// Функция вычисления среднего периметра спутника

  /// </summary>

  public double Perimeter()

  {

   return 2.0 * 3.14 * radius;

  }

 }

}

}

using System;

using Satellite = lab7.Satellites.Satellite;

using ArrSatellite = lab7.SatellitesList.ArrSatellite;

namespace Planets

{

 

 /// <summary>

 /// Summary description for Planet.

 /// </summary>

 //запечатанный класс - не наследуется

 sealed class Planet : Satellite

{

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

 private string plName;

 //массив спутников для данной планеты

 private ArrSatellite arrSatl;

 public Planet()

 {

  //System.Console.WriteLine("Planet Default constructor called");

 }

 //конструктор с параметрами и вызывается вначале конструктор базового класса с параметрами

 public Planet(string plName): base("Triton", "1846", 1352, 2.061)

 {

  this.plName = plName;

  //System.Console.WriteLine("Planet constructor with parameters called");

 }

 public ArrSatellite ArrSatl

 {

  get{return arrSatl;}

  set { arrSatl = value;}

 }

 /// <summary>

 /// Свойство чтения-записи названия планеты

 /// </summary>

 public void SetPlName(string plName)

 {

  this.plName = plName;

  

 }

 public string GetPlName()

 {

  return plName;

  

 }

 public new void GetName(out string name)

 {

  name = plName;

  Console.WriteLine("Called Planet.GetName(...)");

 }

 public override string Name

 {

  

  get { return plName;}

  set { plName = value; }

 }

 public void BaseMethods()

 {

  Console.WriteLine("Calling base methods...");

  Console.WriteLine("Mass         {0}", base.Mass());

  Console.WriteLine("Area         {0}", base.Area());

  Console.WriteLine("Perimeter    {0}", base.Perimeter());

 }

}

}

namespace lab7

{

 /// <summary>

 /// Summary description for ArrSatellite.

 /// </summary>

 namespace SatellitesList

{

 public class ArrSatellite

 {

  string [][] arrName;

  public ArrSatellite(uint count)

  {

   arrName = new string [count][];

  }

 

  //индексатор для чтения и записи

  public object this [int id]

  {

   get

   {

    if(id>=0 && id < arrName.Length)

    {

     return arrName[id];

    }

    else throw new System.IndexOutOfRangeException("Out Of Range Array");

   }

   set

   {

    if(id>=0 && id < arrName.Length)

    {

     arrName[id]= new string[((string[])value).Length];

     arrName[id]=(string[])value;

    }

    else throw new System.IndexOutOfRangeException("Out Of Range Array");

   }

  }

  public void SetName(uint id, params string[][] name)

  {

   if(id>=0 && id < arrName.Length)

   {

    arrName[id]= new string[name[0].Length];

    arrName[id]=name[0];

   }

   else throw new System.IndexOutOfRangeException("Out Of Range Array");

  }

  public void SetName(uint id, ref string[] name)

  {

   if(id>=0 && id < arrName.Length)

   {

    arrName[id]= new string[name.Length];

    arrName[id]=name;

   }

   else throw new System.IndexOutOfRangeException("Out Of Range Array");

  }

  public string[] GetName(uint id)

  {

   if(id>=0 && id < arrName.Length)

   {

    return arrName[id];

   }

   else

    throw new System.IndexOutOfRangeException("Out Of Range Array");

  }

  public void GetNameOut(uint id, out string[] name)

  {

   if(id>=0 && id < arrName.Length)

   {

    name = arrName[id];

   }

   else

    throw new System.IndexOutOfRangeException("Out Of Range Array");

  }

 }

}

}

Результат работы программы:

lab7.dll.

Выводы:

  1.  Приобретены навыки в создании пространств имён  в C#.
  2.  Приобретён навык в использовании ключевого слова using..
  3.  Получен опыт работы с модификаторами доступа классов.
  4.  Получен опыт в создании DLL в C#.
  5.  Получен навык по реализации псевдонимов пространств имён.
  6.  Приобретён навык в использовании модификатора internal в C#.




1. Статья 320 Право апелляционного обжалованияв ред
2. Мастера психологии
3. . Понятие правонарушения
4. і. Божественна комедія.
5. реферат дисертації на здобуття наукового ступеня кандидата педагогічних наук Киї
6. ~аза~станны~ мемлекеттік егемендігі туралы Декларациясы ~ашан ~абылданды 1990 ж 16 желто~сан; B 1991 ж 20 ~а
7. Альметьевский профессиональный колледж Дипломное проектирование
8. Экономико-правовое понятие собственности
9. Forword trnscript 6 Minute English bbclerningenglish
10. ISO 9000 как инструмент организационных изменений
11. статтях фінансової звітності
12. Общие санитарногигиенические требования к воздуху рабочей зон
13. . Мета і завдання виховання дітей дошкільного віку Виховання як гуманітарна суспільна практика має певне.
14.  - шт 2 Штробление стен под электропроводку в кирпиче 50 руб
15. Курсовая работа- Застосування BORLAND C++ BUILDER для створення ігрових програм
16. тема сохранения жизни и здоровья работников в процессе трудовой деятельности включающая в себя правовые со
17. ангиотензина II рецепторов блокатор П
18. общинный строй при котором основой производственных отношений была общественная собственность на средства
19. Первоначальная обработка геодезических измерени
20. В 1988 г было принято постановление ЦК КПСС впервые признавшее необходимость высшего социологического образ