Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 10

Классы (private, public)

28.02.2013, 17:51. Показов 3004. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добра,
недавно начал осваивать С# (дня два).
Нужна Ваша помощь, вернее совет, по поводу классов в C#.
Создал программку которая находит полярные координаты точки, в задании нужно было использовать два типа доступа: private и public, что, собственно, я и сделал, до этого создал аналогичную программу на С++, когда сравнил плюсы и шарп возникло чувство, что на шарпе я что-то не так сделал: не так уж и долго я морочился с этой программкой, буду благодарен, если Вы, форумчане, выскажите свое мнение по поводу моего кода.
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
using System;
 
public class Coordinates
{
    private double x = 12, y = 5, r, angle;
 
    public Coordinates(){Console.WriteLine("Constructor!");}
          ~Coordinates(){Console.WriteLine("Deconstructor!");}
 
    public void GetData()
    {
        Console.WriteLine("The Cartesian Coordinates of a point (X,Y):");
        Console.WriteLine("X= " + x);
        Console.WriteLine("Y= " + y);
    }
 
    public double PolarFinder()
    {
        r = Math.Sqrt(x * x + y * y);
        angle = Math.Atan2(y, x) * 180 / Math.PI;
        Console.WriteLine("Polar coordinates are:");
        Console.WriteLine("R= " + r);
        Console.WriteLine("ANGLE=" + angle);
        return 0;
    }
}
 
class TestCoordinates
{
    static void Main()
    {
        Coordinates coordinates = new Coordinates();
        coordinates.GetData();
 
        Coordinates coordinates2 = new Coordinates();
        coordinates2.PolarFinder();
 
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.02.2013, 17:51
Ответы с готовыми решениями:

Разъяснение по конструкции public string Name { get; private set; }
Если убрать конструкцию { get; private set; } , ничего не произойдёт, так зачем же она нужна? Фрагмент кода: class Account { ...

Передача и хранение private и public key RSA
Есть два приложения - одно шифрует строку, второе расшифровывает. Хранить ключи по условию нужно в app.config шифрование и сохранение...

Изменить модификаторы доступа public к полям класса на private
Был тут вот такой код: namespace ConsoleApplication3 { class Room { public double length; //длина ...

1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
28.02.2013, 18:10
victor72, деструкторы в шарпе не реализуются, так как объект удаляется в случайные промежутки времени. Вместо этого нужно наследовать интерфейс IDispossable и реализовывать Dispose().
Дальше: поля r и angle являются локальными в методе PolarFinder и нигде больше не используются.
третье: не лучше ли возвращать параметры, а не печатать их? Например
C#
1
2
3
4
5
6
    public void GetData()
    {
        Console.WriteLine("The Cartesian Coordinates of a point (X,Y):");
        Console.WriteLine("X= " + x);
        Console.WriteLine("Y= " + y);
    }
преборазовать в
C#
1
2
3
4
    public Tuple<double,double> GetCartesianCoordinates()
    {
        return new Tuple<double,double>(X,Y);
    }
Ну а проще просто преобразовать поля в рид-онли свойства В итоге как-то так:
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
using System;
 
public class Coordinates
{
    public double X {get; private set;}
    public double Y {get; private set;} 
 
    public Coordinates()
    {
       Console.WriteLine("Constructor!");
    }
 
    public public Tuple<double,double> PolarFinder()
    {
        double r = Math.Sqrt(x * x + y * y);
        double angle = Math.Atan2(y, x) * 180 / Math.PI;
        return new Tuple<double,double>(r,angle);
    }
}
 
class TestCoordinates
{
    static void Main()
    {
        Coordinates coordinates = new Coordinates();
        Console.WriteLine("The Cartesian Coordinates of a point (X,Y):");
        Console.WriteLine("X= " + coordinates.X);
        Console.WriteLine("Y= " + coordinates.Y);
 
        Coordinates coordinates2 = new Coordinates();
        var res = coordinates2.PolarFinder();
        Console.WriteLine("R= " + res.Item1);
        Console.WriteLine("ANGLE=" + res.Item2);
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
Подводя итог: декартовы координаты бессмысленны для точки в полярных и наоборот: угол и радиус бесполезны для декартовой точки. Вывод: нужно написать два отдельных класса DecartPoint и PolarPoint (при желании можно наследовать от одного класса), при желании можно написать преборазование одних в другие
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.02.2013, 18:10
Помогаю со студенческими работами здесь

Чем по сути отличаются между собой Static, Public и Private
Это Наиболее часто встречаемые спецификаторы при использовании методов. Объясните не так, как объясняют в лекциях, а так, чтобы реально...

Написать модуль, содержащий описание следующего класса (использовать private и public)
Объект - дата этого года. Свойства - (Rw) день и месяц; - (Rw) день недели (при изменении выбирается ближайший день этого года); ...

Как обратиться к textBox1 на Form1 из Form2, не изменяя у textBox1 private на public?
Всем привет! Подскажите пожалуйста как обратиться к textBox1 на Form1 из Form2, не изменяя у textBox1 private на public?

Почему нельзя саздовать классы с модификатором private?
Почему нельзя создавать классы с модификатором private? Ошибка: &quot;Элементы, определенные в пространстве имен, не могут объявляться в явном...

Как из pfx файла достать private/public ключ?
Есть pfx файл и из него надо достать приватный ключ и публичный ключ, создаю файл с помощью библиотеки bouncy castle. Если знаете более...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru