Перейти к содержимому

kostya100

kostya100

Регистрация: 04.02.2010, 09:15
Offline Активность: 19.01.2012, 20:04
-----

В теме: Как сломать и снова собрать склад ума? От процедур к ООП.

12.01.2012, 22:24:26

Могу посоветовать способ, который сам использовал: читать и изучать хороший ООП код.
Сам начинал еще с библиотеки Turbo Vision в Borland Pascal.

Автор книги, которая упоминается судя по всему Гради Буч.

Просто если смотреть на С#, там невозможно написать даже простейшую программу не используя классов. Даже любая простейшая функция должна быть в классе :)


Наиболее близкий к процедурному стилю будет подобный код в C#:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            int C = NumberUtils.Sum(2, 3);
            int D = NumberUtils.Mul(2, 3);
            Text = String.Format("C = {0}, D = {1}", C, D);
        }
    }

    public class NumberUtils
    {

        public static int Sum(int A, int B)
        {
            return A + B;
        }

        public static int Mul(int A, int B)
        {
            return A * B;
        }
    }
}

Если смотреть поверхностно, тут есть класс NumberUtils. Но так как не создается никаких объектов, можно считаеть его аналогом модуля в Delphi, в котором описаны 2 функции Sum и Mul.

Далее приведу код, делающий то же самое, но более похожий на ООП код:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            Number C = new Number(2);
            C.Add(new Number(3));

            Number D = new Number(2);
            D.Multiply(new Number(3));

            Text = String.Format("C = {0}, D = {1}", C.AsInteger, D.AsInteger);
        }
    }

    public class Number
    {
        private int data;

        public Number(int NewValue)
        {
            data = NewValue;
        }

        public int AsInteger
        {
            get { return data; }
            set { data = value; }
        }

        public void Add(Number N)
        {
            this.AsInteger += N.AsInteger;
        }

        public void Multiply(Number N)
        {
            this.AsInteger *= N.AsInteger;
        }
    }
}
Преимущество 2 подхода в том, что теперь можно описывать классы-потомки от Number (например класс вещественных чисел и класс комплексных чисел), изменив у них методы Add и Multiply соответствующим образом.

В теме: Алгоритм проверки СИК

04.02.2010, 12:43:10

' date='23.05.2006, 13:06' post='2348148']
Парни дайте пива и я выложу исходник модуля Sik для Delphi 7. А то я в свое время ночь потратил на анализ этой dll-ки, чтобы достать из нее алгоритм. :-/

Кто продолжение истории знает? Я про казяз. Однако веселое дело!


Казахские буквы должны передаваться в Ansi-кодировке СТ РК 1048-2002. Сам алгоритм не меняется. Узновал, работает.

Изображение

Кому интересно открылся сайт sik.idhost.kz - чистые алгоритмы СИКа без дллок. Есть на яве в виде хранимой процедуры для Оракл.

В теме: Алгоритм СИК

04.02.2010, 12:33:57

Кому интересно открылся сайт sik.idhost.kz - чистые алгоритмы СИКа без дллок. Есть на яве в виде хранимой процедуры для Оракл.

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.