Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Гляньте код скажите что сделано не грамотно? С точки зрения ООП 
:(
    Опции темы
Partizan
Дата 9.8.2008, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



WaReZMEN, а с чего вы взяли что в разделе о проектировании дают готовые решения? всего-то помогут нормальную структуру классов сделать...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
WaReZMEN
Дата 9.8.2008, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Partizan, я что то не видал такого раздела...
Цитата(Partizan @  9.8.2008,  09:10 Найти цитируемый пост)
нормальную структуру классов сделать

Ну так я это и пытаюсь сделать следовательно для меня это и будет готовое ришение... 

PM MAIL ICQ   Вверх
Partizan
Дата 9.8.2008, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



Ладно, не хотите прислушаться, разбирайтесь сами....


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
WaReZMEN
Дата 9.8.2008, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Partizan, я ж говорю не видал такого раздела скажите де н я почитаю что там пишут мож сам все поиму...
source777 , если я правельно все понял то получается что то вроде этого 
user posted image

Это сообщение отредактировал(а) WaReZMEN - 9.8.2008, 02:25
PM MAIL ICQ   Вверх
Partizan
Дата 9.8.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67





--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
WaReZMEN
Дата 9.8.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Partizan, спасибо почитаю... 
PM MAIL ICQ   Вверх
source777
Дата 9.8.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 3
Всего: 56



Цитата(WaReZMEN @  9.8.2008,  00:55 Найти цитируемый пост)
Вот если чесно профиль делается из тогоже что и перегородка зазница между ними в ом что у профеля углы скошены а у перегоротки прямые ну и ее можно двигать... 
Это всё равно, что сказать, ружьё делается из стали и труба делается из стали, а разница между ними только в том, что у ружья ещё есть приклад и оно стреляет... Ты считаешь это нормальное док-во того, что ружьё является трубой? 


Цитата(WaReZMEN @  9.8.2008,  00:55 Найти цитируемый пост)
Воообщем если говорите не нужно наследовать значит не буду...
Я не говорю, что не надо использовать наследование вообще, но пока не доказано, что объекты связаны отношением "является" наложить запрет на использование наследования вполне разумно.

Цитата(WaReZMEN @  9.8.2008,  01:56 Найти цитируемый пост)
source777 , если я правельно все понял то получается что то вроде этого
Пока да, можно ещё ввести абстрактный класс между интерфейсом и конкретными классами для общей реализации свойств... 
+ на схеме не отражена композиция в классе Window, о которой я уже говорил.



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
WaReZMEN
Дата 10.8.2008, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



source777
Цитата(source777 @  10.8.2008,  00:01 Найти цитируемый пост)
Пока да, можно ещё ввести абстрактный класс между интерфейсом и конкретными классами для общей реализации свойств... 
+ на схеме не отражена композиция в классе Window, о которой я уже говорил.

о Window ну да пока не сделал... По поводу абстрактного класса уже сделал.
source777,  Спасибо огромное за то что помогаете мне разобратся да и вспомнить что к чему! +
PM MAIL ICQ   Вверх
WaReZMEN
Дата 10.8.2008, 06:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



source777
Вот накидал побыстрому 
user posted image
Тока чесно не понимаю нафтга интерфеис использовать? 

 вот код

Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace WinConstructor
{    
    

    public interface IDrawable
    {
         int Width //Ширина
        { get;}

         int Height //Высота
        { get;}

         Point[] TopLeftPoint
        { get;}

         void Draw();
    }

    public class WindowFrame : WindowComponent
    {
    }

    public class Separator : WindowComponent
    {
    }

    public class Profile : WindowComponent
    {

    }

    public class Pane : WindowComponent
    {
    }

    public class Window : WindowComponent
    {
        private WindowFrame WinFrame;
        private List<Separator> SeparatorList = new List<Separator>();
        private List<Profile> ProfileList = new List<Profile>();
        private List<Pane> PaneList = new List<Pane>();
    }

    public abstract class WindowComponent : IDrawable
    {
        private int height;
        private int width;
        private Point[] topleftpoint;

        public int Height
        {
            get { return height; }
            set { height = value; }
        }

        public int Width
        {
            get { return width; }
            set { width = value; }
        }

        public Point[] TopLeftPoint
        {
            get { return topleftpoint; }
            set { topleftpoint = value; }
        }

        public void Draw()
        {
            throw new System.NotImplementedException();
        }
    }
}


PM MAIL ICQ   Вверх
source777
Дата 11.8.2008, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 3
Всего: 56



Цитата
Тока чесно не понимаю нафтга интерфеис использовать? 
Ну интерфейсы обычно для повторного использования в разных проектах вводятся, если ничего похожего ты не планируешь делать, то можешь обойтись абстрактным классом.

P.S. Следующим шагом, спроектируй публичные методы своих классов и опиши их действия на псевдокоде, максимально детализируй псевдокод, но с учётом того, что псевдокод не зависит от языка программирования!


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
WaReZMEN
Дата 11.8.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



source777
Цитата(source777 @  11.8.2008,  18:12 Найти цитируемый пост)
действия на псевдокоде, максимально детализируй псевдокод

Что имеется ввиду под псевдокодом?

Вот последняя диаграмма 
user posted image

Это сообщение отредактировал(а) WaReZMEN - 11.8.2008, 10:39
PM MAIL ICQ   Вверх
nagg
Дата 11.8.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 6.1.2008
Где: Minsk

Репутация: 4
Всего: 4



Рекоммендую почитать товарища Макконнелла с его "блокбастером"  - Совершенный Код (вопросы по типу "нафига интерфейс" отпадут сами собой)


ЗЫ: и про псевдокод там есть : )


Это сообщение отредактировал(а) nagg - 11.8.2008, 10:24
--------------------
I am the State...
PM MAIL WWW ICQ Skype   Вверх
WaReZMEN
Дата 11.8.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



nagg, попобобнее де о
Цитата(nagg @  11.8.2008,  18:22 Найти цитируемый пост)
Макконнелла с его "блокбастером"  - Совершенный Код 


PM MAIL ICQ   Вверх
source777
Дата 11.8.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 3
Всего: 56



Цитата(WaReZMEN @  11.8.2008,  11:16 Найти цитируемый пост)
попобобнее де о
Стив Макконнелл "The Code Complete" оно же "Совершенный код", кстати список вопросов по качеству классов(см.выше), как раз оттуда smile

Цитата(WaReZMEN @  11.8.2008,  10:22 Найти цитируемый пост)
Что имеется ввиду под псевдокодом?
Запись алгоритма на естественном языке, в нашем случае, на русском. Описывать надо то, что будет делать код, а не как он это будет делать.


Это сообщение отредактировал(а) source777 - 11.8.2008, 12:27


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
WaReZMEN
Дата 11.8.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



source777, это прям в редакторе тоесть какбы каментрий в классе?
так ?
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace WinConstructor
{    
    
 
    public class WindowFrame : WindowComponent
    {
        public  WindowFrame()
        {
            //Создание рамы
        }

        public void Draw(Graphics Canvas)
        {
            //рисование
        }
    }

    public class Separator : WindowComponent
    {
        public  Separator()
        {
            //Создание разделителя
        }

        public void Move()
        {
         //Перемещение расдилоителя
        }

        public void Draw(Graphics Canvas)
        {
            //рисование
        }
    }

    public class Profile : WindowComponent
    {

        public Profile()
        {
            //Создание профиля 
        }

        public void Draw(Graphics Canvas)
        {
            //Рисование
        }
    }

    public class Pane : WindowComponent
    {
        public  Pane()
        {
            //создание окна
        }

        public void Calc()
        {
          // Сдесь бутет расчет координат стекла с учетом раздилителеи и перемещения разделителя  
        }

        public void Draw(Graphics Canvas)
        {
            //Рисование стекла
        }
    }

    public class Window : WindowComponent //Главный класс
    {
        private WindowFrame WinFrame; 
        private List<Separator> SeparatorList = new List<Separator>();
        private List<Profile> ProfileList = new List<Profile>();
        private List<Pane> PaneList = new List<Pane>();

        public Window()
        { //Конструктор класса сдесь буте создоватся окно без разделителеи только рама и стекло
            this.Width = 100;
            this.Height = 200;
        }

        public void DropSeparator()
        {
            //Добовление разделителя он может быть горизонтальным и вертикальным
        }
    }

    public abstract class WindowComponent 
    {
        private int height;
        private int width;
        private Point topleftpoint;
        private bool select;

        public int Height
        {
            get { return height; }
            set { height = value; }
        }

        public int Width
        {
            get { return width; }
            set { width = value; }
        }

        public Point TopLeftPoint
        {
            get { return topleftpoint; }
            set { topleftpoint = value; }
        }

        public bool Selected
        {
            get { return select; }
            set { select = value; }
        }

        public void Draw(Graphics Canvas)
        {

        }
    }
}



Это сообщение отредактировал(а) WaReZMEN - 11.8.2008, 13:04
PM MAIL ICQ   Вверх
Страницы: (6) Все « Первая ... 2 3 [4] 5 6 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0970 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.