Ошибка Для нестатического поля, метода или свойства "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
{
}
}