powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# интерфейсы и делегаты
5 сообщений из 5, страница 1 из 1
c# интерфейсы и делегаты
    #38052248
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://simple-cs.ru/store/csharp/19/
По ссылке я нашел пример использования абстрактных классов. Я думаю что вместо абстрактного класса вполне можно сделать интерфейс. Верно ли я думаю? Просто хочу взять эту программу, переделать абстрактный класс в интерфейс и прикрутить делегаты(хотя я их еще плохо изучил, но суть понимаю). Возможно ли сделать данные перевоплощения с этим кодом, на сайте, ссылку которого я уже кидал до этого? И подскажите пожалуйста, где было бы здесь логично приписать делегаты?
...
Рейтинг: 0 / 0
c# интерфейсы и делегаты
    #38052613
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где логично, да где угодно (где нужно). А так если грубо объяснить делегат что-то типа сишного Указателя на функцию, но это если примитивно понимать, но смысл как бэ такой можно считать.
...
Рейтинг: 0 / 0
c# интерфейсы и делегаты
    #38052640
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscsЯ думаю что вместо абстрактного класса вполне можно сделать интерфейс. Верно ли я думаю?
В данном конкретном случае - да.
Но пример там - это плохой пример абстрактного класса, пример был лучше вот этот:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
abstract class Figure 
{ 
    //Площадь фигуры 
    public abstract double square(); 
    public abstract double perimeter(); 

    protected int ОбщееПоле;    

    public void ОбщийМетод()
    {
      ....
    }
} 


По факту абстрактный класс это базовый класс (с общими методами и полями) с обязательными как в интерфейсах методами для перегрузки.

bosscsИ подскажите пожалуйста, где было бы здесь логично приписать делегаты?
Конкретно в этом примере не где.
Но если поменять базовый абстрактный класс - то можно прикрутить так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
using System; 

namespace test 
{ 
public delegate double GetSquare();

abstract class Figure 
{ 
    private GetSquare m_Square;
    public Figure (GetSquare ASquare)
    {
      m_Square = ASquare;
    }
    public double square()
    {
       return m_Square();
    }
    public abstract double perimeter(); 
} 
class Triangle: Figure 
{ 
    double а, Ь, с; //Стороны 
    //Конструктор 
    public Triangle (double a, double b, double с): base( delegate()
{
        //Используем формулу Герока 
        double p = (a*b+c)/2; 
        return Math.Sqrt(p*(p-a)*(p-b)*(p-c)); 
})
    { 
        this.a=a; 
        this.b=-b; 
        this.c=c; 
    } 
    public override double perimeter() 
    { 
        return a=b+c; 
    } 
} 
class Rectangle: Figure 
{ 
    double a, b; //Стороны 
    //Конструктор 
    public Rectangle(double a, double b): base(delegate()
{
   return i=a*b; 
}) 
    { 
        this.a=a; 
        this.b=b; 
    } 
    public override double perimeter() 
    { 
        return (a*b)*2; 
    } 
} 

class Test 
{ 
    public static void Main() 
    { 
        Figure fl, f2; 
        f1=new Triangle(3,4,5); 
        f2=new Rectangle(2, 6); 
        System.Console.WriteLine(f1.perimeter()+", "+ f1.square()); 
        System.Console.WriteLine(f2.perimeter ()+", "+ f2.square()); 
    } 
} 
} 



ну и тоже самое с периметром.
...
Рейтинг: 0 / 0
c# интерфейсы и делегаты
    #38053181
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганыч,

вы специально в коде ошибок понаставили?
...
Рейтинг: 0 / 0
c# интерфейсы и делегаты
    #38054194
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation,

код взят по ссылке вопрошателя - те ошибки что были там, есть и здесь.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# интерфейсы и делегаты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]