Ошибка Для нестатического поля, метода или свойства "QuaterLib.Quater.Square()" требуется ссылка на объект - C#
Формулировка задачи:
Здравствуйте. Подскажите что не так я намудрил. Вот само задание.
Необходимо реализовать иерархию классов. Определить иерархию зданий квартала. Создать жилой квартал города. Посчитать жилую общую площади зданий квартала.
1. Иерархия должна состоять не менее чем из 3 уровней.
2. Каждый класс должен содержать уникальный набор полей.
3. В классах не должно быть открытых полей(должны быть модификаторы доступа private или protected).Для доступа к полям класса использовать свойства.
4. В процессе реализации иерархии классов использовать абстрактные классы.
5. Классы рекомендуется оформить в виде библиотеки классов. Проверку функциональности осуществить в консольном проекте.
6. В рамках решения создать диаграммы классов.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace QuaterLib { public abstract class Quater { public abstract void Print(); public abstract int Square(); } public class AllBuildings : Quater { public override void Print() { Console.WriteLine("Общая площадь квартала = {0}",NonameBuildings.Square()+Buildings.Square()); } public override int Square() { throw new NotImplementedException(); } } public class NonameBuildings : AllBuildings { public NonameBuildings(int buildingArea, int numberBuilding) { BuildingArea = buildingArea; NumberBuilding = numberBuilding; } public int BuildingArea { get { return BuildingArea; } set { BuildingArea = value; } } public int NumberBuilding { get { return NumberBuilding; } set { NumberBuilding = value; } } public override void Print() { Console.WriteLine("Площадь безымянных зданий = {0}", BuildingArea*NumberBuilding); } public override int Square() { return BuildingArea * NumberBuilding; } } public class Buildings : AllBuildings { public override void Print() { Console.WriteLine("Площадь зданий = {0}", SocialBuildings.Square() + PersonalBuildings.Square()); } public override int Square() { return SocialBuildings.Square() + PersonalBuildings.Square(); } } public class PersonalBuildings : Buildings { public PersonalBuildings(int numberOfBuildings, int floorArea, int floors) { Floors = floors; FloorArea = floorArea; NumberOfBuildings = numberOfBuildings; } public int Floors { get { return Floors; } set { Floors = value; } } public int FloorArea { get { return FloorArea; } set { FloorArea = value; } } public int NumberOfBuildings { get { return NumberOfBuildings; } set { NumberOfBuildings = value; } } public override void Print() { Console.WriteLine("Площадь жилых зданий = {0}",FloorArea*Floors*NumberOfBuildings); } public override int Square() { return Floors * FloorArea * NumberOfBuildings; } } public class SocialBuildings : Buildings { public SocialBuildings(int numberOfBuildings, int floorArea, int floors) { Floors = floors; FloorArea = floorArea; NumberOfBuildings = numberOfBuildings; } public int Floors { get { return Floors; } set { Floors = value; } } public int FloorArea { get { return FloorArea; } set { FloorArea = value; } } public int NumberOfBuildings { get { return NumberOfBuildings; } set { NumberOfBuildings = value; } } public override void Print() { Console.WriteLine("Площадь социальных зданий = {0}",FloorArea*Floors*NumberOfBuildings); } public override int Square() { return Floors * FloorArea * NumberOfBuildings; } } }
Решение задачи: «Ошибка Для нестатического поля, метода или свойства "QuaterLib.Quater.Square()" требуется ссылка на объект»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Text; namespace MyLibrary { //Класс Здание public abstract class Building { protected int Xpos;//Позиция по X protected int Ypos;//Позиция по Y //Конструктор public Building(int x, int y, string type) { Xpos = x; Ypos = y; Type = type; } //Свойство типа public string Type { get; private set; } //Метод площади abstract public double S(); } //Класс дом->здание public class House : Building { //Конструктор public House(int x, int y, string type) : base(x, y, type) { } //Площадь public override double S() { return Xpos * Ypos; } } //Класс частный дом->дом public class Private_House : House { //Конструктор public Private_House(int x, int y, string type) : base(x, y, type) { } //Площадь public override double S() { return base.S(); } } //Класс многоквартирный дом->дом public class Common_House : House { //Количество квартир private int Quarter_Num; //Количество этажей private int Floor_Num; //Конструктор public Common_House(int x, int y, string type, int Quarters, int Floors) : base(x, y, type) { Quarter_Num = Quarters; Floor_Num = Floors; } //Площадь public override double S() { return base.S(); } //Свойство количества квартир public int Quater_Numbers { get { return Quarter_Num; } } //Свойство количества этажей public int Floors_Numbers { get { return Floor_Num; } } } //Класс магазин->здание public class Shopping //: Building { } //Класс большой магазин->магазин public class Big_Shopping //: Shopping { } //Класс маленький магазин->магазин public class Small_Shopping //: Shopping { } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д