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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы