Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2012, 22:59   #1
JekaM311
 
Регистрация: 24.10.2012
Сообщений: 3
Радость Наследование в C#

Необходимо:

Создать класс Point (точка). На его основе создать классы ColoredPoint и Line
(линия). На основе класса Line создать классы ColoredLine и PolyLine (многоугольник).
В классах описать следующие элементы:
• конструкторы с параметрами и конструкторы по умолчанию;
• свойства для установки и получения значений всех координат, а также для
изменения цвета и получения текущего цвета;
• для линий — методы изменения угла поворота линий относительно первой
точки;
• для многоугольника — метод масштабирования. Создать класс Point (точка). На его основе создать классы ColoredPoint и Line
(линия). На основе класса Line создать классы ColoredLine и PolyLine (многоугольник).
В классах описать следующие элементы:
• конструкторы с параметрами и конструкторы по умолчанию;
• свойства для установки и получения значений всех координат, а также для
изменения цвета и получения текущего цвета;
• для линий — методы изменения угла поворота линий относительно первой
точки;
• для многоугольника — метод масштабирования.

Дополнение: Выполните задание,используя для хранения экземпляров
разработанных классов стандартные параметризованные коллекции. Во всех классах реализовать интерфейс IComparable и перегрузить операции отношения для реализации значимой семантики сравнения объектов по какому-либо полю на ваше усмотрение

Есть наработки, помогите реализовать последние два пункта и дополнение, спасибо

Код:
class Point 
        {
 
            public Point() //конструктор по умолчанию
            {
            }
            public Point(int x, int y) //конструктор
            {
                this.X = x;
                this.Y = y;
            }
 
            private int _X;
            public int X
            {
                get //способ пролучения свойства
                {
                    return this._X;
                }
                set //способ задания свойства
                {
                    _X = value;
                }
            }
 
            private int _Y;
            public int Y
            {
                get
                {
                    return this._Y;
                }
                set
                {
                    _Y = value;
                }
            }
        }
 
        class ColoredPoint : Point
        {
            public ColoredPoint()
            { }
 
            public ColoredPoint(int x, int y, int color)
                : base(x, y)
            {
                this.Color = color;
            }
 
            private int _Color;
            public int Color
            {
                get
                {
                    return this._Color;
                }
                set
                {
                    _Color = value;
                }
            }
        }
 
        class Line
        {
            public Line()
            { }
 
            public Line(Point start, Point end)
            {
                this.Start = start;
                this.End = end;
            }
 
            public Line (int x1, int y1, int x2, int y2)
                : this(new Point(x1, y1), new Point(x2,y2))
            { }
 
           
            
            private Point _Start;
            public Point Start
            {
                get { return _Start; }
                set { _Start = value; }
            }
 
            private Point _End;
            public Point End
            {
                get { return _End; }
                set { _End = value; }
            }
        }
 
        class ColoredLine : Line 
        {
            public ColoredLine(Point start, Point end, int color)
                : base(start, end)
            {
                this.Color = color;
            }
 
            public ColoredLine(int x1, int y1, int x2, int y2, int color)
                : this(new Point(x1, y1), new Point(x2,y2), color)
            { }
            
            private int _Color;
            public int Color
            {
                get
                {
                    return this._Color;
                }
                set
                {
                    _Color = value;
                }
            }
        }
 
        class Polygon  
        {
            public Polygon()
            {}
 
            public Polygon(List<Line> frieng)
            {
                this.Frieng = frieng;
            }
            
            private List<Line> _Frieng;
            public List<Line> Frieng
            {
                get { return _Frieng; }
                set { _Frieng = value; }
            }
        }
JekaM311 вне форума Ответить с цитированием
Старый 20.11.2012, 01:03   #2
JekaM311
 
Регистрация: 24.10.2012
Сообщений: 3
По умолчанию

Какие будут идеи? С чего начинать то..
JekaM311 вне форума Ответить с цитированием
Старый 20.11.2012, 07:24   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Ну а что сложного ?
Берете пишете метод изменения угла линии, на вход номер вершины и угол в виде дабла (грудусы или радианы, как хотите), внутри расчёт типа
Код:
switch (VertNum)
{
    case 0: 
    {
         End.X += Length * Math.Cos(Angle); // аналогично у, только синус
// ленс - допишите функцию расчёта длины линии по пифагору, угол - учёсть рад/градусы
    }
// аналогичный кейс для начальной вершины, и можно ещё обработать default
}
Масштабирование прямоугольника - можно просто принять за точку масштаба одну из вершин (по желанию и центр добавить) и соответственно высчитывать новые положения остальных по обычным геометрическим формулам.

Конструкторы по умолчанию наполните, чего они у Вас пустые-то ?

Дополнение потом, сперва это сделайте )
phomm вне форума Ответить с цитированием
Старый 20.11.2012, 15:59   #4
JekaM311
 
Регистрация: 24.10.2012
Сообщений: 3
По умолчанию

phomm

Спасибо за помощь..Вот решил переделать, вроде всё правильно?
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lb9
{
    class Poin
    {
        protected int Xpos;
        protected int Ypos;
        public Poin(int x, int y)
        {
            Xpos = x;
            Ypos = y;
        }
        public virtual void Draw()
        {
            Console.WriteLine("Poin in: ({0},{1})", Xpos, Ypos);
        }
    }
    class ColorPoint : Poin
    {
        string clr;
        public ColorPoint(int x, int y, string color)
            : base(x, y)
        {
            clr = color;
        }
        public override void Draw()
        {
            Console.WriteLine("Point in: ({0},{1}) color: {2}", Xpos, Ypos, clr);
        }
    }
    class Line : Poin
    {
        protected int Xo;
        protected int Yo;
        public Line(int x, int y, int a, int u)
            : base(x, y)
        {
            Xo = a;
            Yo = u;
        }
        public override void Draw()
        {
            Console.WriteLine("Line in: Начальная точка ({0},{1}) конечная точка ({2},{3}) ", Xpos, Ypos, Xo, Yo);
        }
    }
    class ColoredLine : Line
    {
        string clr;

        public ColoredLine(int x, int y, int a, int u, string color)
            : base(x, y, a, u)
        {
            Xo = a;
            Yo = u;
            clr = color;

        }
        public override void Draw()
        {
            Console.WriteLine("Line in: Начальная точка ({0},{1}) конечная точка ({2},{3}) color: {4} ", Xpos, Ypos, Xo, Yo, clr);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Родительский класс point");
            Console.WriteLine("point введите координату X ");
            int k = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("point введите координату Y ");
            int l = Convert.ToInt16(Console.ReadLine());
            Poin onepoint = new Poin(k, l);
            onepoint.Draw();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Дочерний класс ColorPoint");
            Console.WriteLine("ColorPoint введите координату X ");
            k = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("ColorPoint введите координату Y ");
            l = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("ColorPoint введите цвет");
            string s = Console.ReadLine();
            Poin pt = new ColorPoint(k, l, s);
            pt.Draw();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Класс Line, образован от класса Point   ");
            Console.WriteLine("Line введите координату X  ");
            k = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Line введите координату Y ");
            l = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Координаты конца линии   ");
            Console.WriteLine("Line введите координату X  ");
            int m = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Line введите координату Y ");
            int z = Convert.ToInt16(Console.ReadLine());
            Poin lin = new Line(k, l, m, z);
            lin.Draw();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Класс ColoredLine, образован от класса Line   ");
            Console.WriteLine("ColoredLine введите координату X  ");
            k = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("ColoredLine введите координату Y ");
            l = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Координаты конца линии   ");
            Console.WriteLine("ColoredLine введите координату X  ");
            m = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("ColoredLine введите координату Y ");
            z = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("ColorLine введите цвет");
            s = Console.ReadLine();
            Poin cln = new ColoredLine(k, l, m, z, s);
            cln.Draw();
            Console.WriteLine();
            Console.WriteLine();
            Console.ReadLine();
        }
    }
}
JekaM311 вне форума Ответить с цитированием
Старый 20.11.2012, 16:56   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Эм, не могу знать ) Если удовлетворяет условиям задания и выполняет свою работу - то правильно ) Проверять пока не могу, так только почитать и на глаз прикинуть.

Вообще, я собственно не вижу изменений особо ) дефолтных конструкторов нет, дополнительных методов тоже... Класс полигона вообще пропал ))
Я так понимаю код из #1 это не Ваш, а из #4 Ваш )
По коллекциям и реализации интерфейса собственно пока можно даже и не думать, лучше сперва основное задание выполнить, а потом уж дополнительное.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
наследование nika@ C# (си шарп) 0 18.03.2012 15:42
наследование c++ Nata-Tata Помощь студентам 1 06.04.2011 00:09
Наследование lolopolosko Помощь студентам 1 21.11.2009 17:17
Наследование alex_triton Общие вопросы C/C++ 0 19.10.2009 20:25
Наследование beregok Общие вопросы C/C++ 1 04.07.2009 22:39