1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 125
1

Можно ли представить класс как функцию или процедуру

10.02.2014, 14:36. Показов 993. Ответов 14
Метки нет (Все метки)

Кто может разжевать, а точнее указать где их применять, по книгами не совсем понятно(Шилтд, Фленов)
Можно ли представить класс как функцию или процедуру(если проводить аналогию Delphi).
Вот хочу сейчас вот эту задачу решить с помощью класса, правильно ли это?
Извините за нубские вопросы и заранее спасибо за ваши ответы!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2014, 14:36
Ответы с готовыми решениями:

Можно ли как то запустить функцию или класс которая находится ниже чем исполняемая функция или класс?
Можно ли как то запустить функцию или класс которая находится ниже чем исполняемая функция или...

Создать класс, в котором можно сохранить любой вызываемый объект или функцию
Возникла идея создать класс, в котором можно сохранить любой вызываемый объект или функцию. Что то...

Как переименовать класс или любую функцию или переменную в редакторе кода
Всем привет! Постоянно сталкиваюсь с такой проблемой, что неудачно называю класс или функцию....

Как исправить ошибку? Сделать через Функцию или Процедуру
Написать метод, который в переданной строке заменят все строчные буквы на заглавные и наоборот. С...

14
Эксперт .NET
5340 / 4132 / 1187
Регистрация: 12.10.2013
Сообщений: 11,982
Записей в блоге: 2
10.02.2014, 14:49 2
Сам не особо спец, но попробую...
Класс - это набор из методов, свойств, переменных. Законченное целое.
Но пока из класса не создан объект этого класса, он ничего не может.
Создавая экземпляр класса, Вы получаете уже объект, и можете пользоваться всеми возможностями, что в нем заложены разработчиком.
Метод - ну это совсем просто, любая процедура, выполняющая свою задачу.
С Делфи сравнивать не могу, поскольку его не знаю...
0
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 125
10.02.2014, 14:59  [ТС] 3
а вот для каких задач лучше использовать класс, а для каких не нужно.
0
707 / 707 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
10.02.2014, 14:59 4
Здесь, пожалуй, можно обойтись и функцией, не оборачивая ее в отдельный класс (так или иначе она окажется в классе программы, формы, etc).
Цитата Сообщение от insite2012 Посмотреть сообщение
Но пока из класса не создан объект этого класса, он ничего не может.
Статические классы забыли.
0
Эксперт .NET
5340 / 4132 / 1187
Регистрация: 12.10.2013
Сообщений: 11,982
Записей в блоге: 2
10.02.2014, 15:04 5
Цитата Сообщение от Kruds Посмотреть сообщение
Статические классы забыли.
Не забыл.
Классический пример - класс Math, из статического класса создать объект нельзя, но можно пользоваться всеми его открытыми методами, обращаться через имя класса с точкой.

Добавлено через 2 минуты
Цитата Сообщение от xBios Посмотреть сообщение
а вот для каких задач лучше использовать класс, а для каких не нужно.
Класс - ну думаю, использовать для какой-то одной задачи, выполнение которой требует нескольких методов, свойств, переменных... Инкапсулировать все в классе, и потом работать через открытые методы, получать значения через открытые свойства, подписываться на события, происходящие при вызове методов класса...
0
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 125
10.02.2014, 15:05  [ТС] 6
Теперь стало еще непонятней, добавились функции и статические классы.
0
Эксперт .NET
5340 / 4132 / 1187
Регистрация: 12.10.2013
Сообщений: 11,982
Записей в блоге: 2
10.02.2014, 15:14 7
Цитата Сообщение от xBios Посмотреть сообщение
Теперь стало еще непонятней, добавились функции и статические классы.
Вот самый простой пример...
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 10;
            int y = 15;
 
            //MyClass2 mc2 = new MyClass2();// - Создать объект нельзя!
            int z = MyClass2.summa(x, y);
 
            MyClass mc = new MyClass(); //Создаем объект класса!
            int v = mc.summa(x, y);
            
            
        }
    }
    class MyClass
    {
        public int summa(int x, int y)
        {
            return x + y;
        }
    }
    static class MyClass2
    {       
        public static int summa(int x, int y)
        {
            return x + y;
        }
    }
}
1
6031 / 3438 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
10.02.2014, 15:42 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Класс - сущность (описание сущности), некий объект. По аналогии все существительные можно представить классами. (Объясню на примере класса "Книга")
Класс описывается при помощи членов http://msdn.microsoft.com/ru-r... 73113.aspx
Для начала тебе нужно знать:
поля - это переменные скрытые в классе (для книги - год издания, количество страниц, размеры, тип обложки и т.д.)
свойства - это параметры характеризующие сущность предоставляемые пользователю (для книги - год издания, количество страниц, размеры, тип обложки и т.д.) Как видно в данном примере Свойства дублируют Поля, но при этом могут быть Поля не представленные Свойствами, они нужны для обеспечения работы класса, а пользователю о них знать не нужно. Могут быть Свойства, которые не отражают поля, а предоставляют данные на основе каких либо вычислений к примеру.
методы - это действия (т.е всегда должны быть глаголами), которые может выполнить сущность, или которые могут быть выполнены с сущностью (для книги - открыть на нужной странице, закрыть, найти текст и т.п.)

Обычные (не статические) классы позволяют создавать экземпляры. Т.е. для класса "Книга" каждая книга является её экземпляром.
Статическими классами как правило описывают сущности обобщённого характера (часто не имеющие материального воплощения). Как показали пример класс Math - "математика". Математика она или есть, или нет. Не бывает двух экземпляров математики

Добавлено через 4 минуты
по сути получается всё что отвечает на вопросы
кто? что? - класс
как я могу это охарактеризовать(описать)? - свойства
что это делает? что я могу с этим сделать? - методы
1
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 125
10.02.2014, 16:21  [ТС] 9
Вроде ясно, попробую реализовать.
Автомобиль это класс,
а Москвич Жигуль Запоорожец - это объекты класса.
0
Эксперт .NET
5340 / 4132 / 1187
Регистрация: 12.10.2013
Сообщений: 11,982
Записей в блоге: 2
10.02.2014, 16:49 10
Цитата Сообщение от xBios Посмотреть сообщение
Вроде ясно, попробую реализовать.
Автомобиль это класс,
а Москвич Жигуль Запоорожец - это объекты класса.
Нет, тут лучше подойдет наследование. Автомобиль-базовый класс, имеющий все общее, что есть у автомобилей (колеса, кузов и т.п.).
А вот класс Запорожец - это дочерний класс. Запорожцы же могут быть разных моделей, года выпуска, цвета...
И остальные так же. Запорожец наследует от Автомобиля все, что у него есть, но имеет и свои, специфичные черты, которые, к примеру, Жигуль не имеет... И сам Жигуль так же - имеет все, что имеет автомобиль плюс что-то свое...
А уже потом из класса Жигуль создаем Жигуль Красного, к примеру, цвета, такого-то года выпуска и такой-то модели... Потом еще один, другой модели, и так далее.
Как-то так.
0
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 125
10.02.2014, 16:56  [ТС] 11
Спасибо всем за ответы, вроде понятно, тему буду держать в закладках)
0
Эксперт .NET
5340 / 4132 / 1187
Регистрация: 12.10.2013
Сообщений: 11,982
Записей в блоге: 2
10.02.2014, 17:12 12
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот простой пример. Как видите объект, созданный из класса Жигуль, имеет не только те свойства, что мы ему присвоили, но и те, которые он унаследовал от класса Автомобиль. В нем самом их нет, но он их имеет.
Это, естественно, сильно упрощено, но думаю понятен смысл.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        
        {
            Жигуль ж1 = new Жигуль();           
            ж1.Цвет = "Красный";
            ж1.ГодВыпуска = 2008;
            Console.WriteLine("Цвет объекта ж1 - {0}, год выпуска объекта ж1 - {1}",
                              ж1.Цвет,ж1.ГодВыпуска);
            Console.WriteLine(ж1.Руль);
            Console.WriteLine(ж1.Колеса);
            Console.ReadLine();
        }
    }
 
    class Автомобиль
    {
        public int Колеса { get { return 4; } }       
        public bool Руль { get { return true; } }
    }
    class Жигуль : Автомобиль
    {
        public string Цвет { get; set; }
        public int ГодВыпуска { get; set; }       
    }
}
1
6031 / 3438 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
11.02.2014, 09:47 13
insite2012, как мне кажется, пример Автомобиль-Жигуль не совсем удачен. Жигуль - это марка, для её описания достаточно одного свойства в составе класса Автомобиль. Точно как свойства Цвет и Год выпуска, они присущи любому автомобилю. Правильнее из класса автомобиль унаследовать классы Легковой автомобиль, Грузовой автомобиль, Автобус....
1
Эксперт .NET
5340 / 4132 / 1187
Регистрация: 12.10.2013
Сообщений: 11,982
Записей в блоге: 2
11.02.2014, 13:01 14
Это небольшой пример, естественно можно сделать и по другому... Но думаю, тут важен сам принцип, как это делается, а вариаций может быть много.
0
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 125
11.02.2014, 14:24  [ТС] 15
Если обобщать то и мой пример был верным
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2014, 14:24

Про процедуру или функцию (не знаю как правильно назвать)
Всем привет! Помогите пожалуйста чайнику При создании формы я получаю список COM портов таким вот...

Используя очередь или стек описать процедуру или функцию обработки узлов дерева.
Используя очередь или стек (считать уже описанными их типы и операции над ними) описать процедуру...

Используя очередь или стек, описать процедуру или функцию, определяющую число вхождений элемента Е в дерево Т
Народ помогите пожалуйста! Проблема в том, что не понимаю суть задания. Прошу не код, а объяснения...

Как используя очередь, написать процедуру или функцию, которая заменяет все отрицательные элементы файла на их абсолютные значения?
Как используя очередь, написать процедуру или функцию, которая заменяет все отрицательные элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.