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

Индексаторы и свойства

15.03.2020, 14:40. Показов 2277. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Само задание звучит так: Класс инкапсулирует текст. Создать индексатор, который возвращает кол-во символов в заданом индексом рядке текста. Создать свойство, которое контролирует доступ к переменной, которая вмещает кол-во гласных литер в тексте. Честно говоря, я не понимаю смысл задания как такового, но решить постарался
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
using System;
namespace homework
{
    class Line
    {
        public string line { get; set; } = "default";
    }
 
    class Text
    {
        private Line[] text;
        private int Vowels { get; set; }
        public Text() => text = new Line[5];
        public Text(int size) => text = new Line[size];
        public int this[int index]
        {
            get=> text[index].line.Length;            
        }
 
    }
 
    class Program
    {
        static public int calculateVowels(Text[] myText)
        {
            int ammountOfVowels = 0;
            //stuff
            return ammountOfVowels;
        }
 
 
        static void Main(string[] args)
        {
            Text text = new Text(3);
          
          
 
            
            Console.WriteLine();
        }
    }
}
В результате у меня получился индексатор, но интовый, заполнять через него не получается. Соответственно, первый вопрос - как в мейне заполнять данный класс. Свойство же я решил сделать обычным, но при создании пользоваться методом подсчёта кол-ва гласных. Но тут тоже есть сомнения - зачем стоило бы вообще делать через свойства, а если делать - то в каком блоке стоило бы делать бизнес-логику самого подсчёта?
Да, сразу ещё добавлю - конкретно в этом примере я не понимаю, что стоило бы инкапсулировать.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2020, 14:40
Ответы с готовыми решениями:

Индексаторы, свойства
есть string ms внутриего лежат слова 1) есть сво-во Site - возврощет размер массива 2) функция add() добоавлет новойслово в...

Индексаторы и свойства
Немного не могу понять для чего нужны индексаторы и свойства. Необходимо выполнить такое задание: Реализовать класс «натурального числа»...

Что такое Свойства и Индексаторы
Подскажите что такое Свойства и Индексаторы ? Какие у них плюсы и для чего они нужны ? Желательно маленькие примерчики чтобы понять.

6
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
15.03.2020, 15:59
Цитата Сообщение от d3mage Посмотреть сообщение
Создать свойство, которое контролирует доступ к переменной, которая вмещает кол-во гласных литер в тексте.
Это очень странное задание и непонятно о каком контроле идёт речь и что этот контроль должен делать..
Цитата Сообщение от d3mage Посмотреть сообщение
В результате у меня получился индексатор, но интовый, заполнять через него не получается. Соответственно, первый вопрос - как в мейне заполнять данный класс.
Передавайте исходный текст в конструктор класса Text при создании.
0
1 / 1 / 0
Регистрация: 07.06.2019
Сообщений: 13
15.03.2020, 16:15  [ТС]
Цитата Сообщение от samana Посмотреть сообщение
Это очень странное задание и непонятно о каком контроле идёт речь и что этот контроль должен делать..
Собственно, в этом вся проблема человеческого языка!)
Цитата Сообщение от samana Посмотреть сообщение
Передавайте исходный текст в конструктор класса Text при создании.
Сразу следующий вопрос - каким образом изменять данные внутри созданного массива? Я понимаю, как это делать при помощи индексаторов, а без них - не понимаю, честно говоря. Если можно - пример.
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
15.03.2020, 17:12
d3mage, но в задании не сказано, что этот текст должен иметь возможность меняться, получается что он задаётся единожды при создании. Наверно..
0
1 / 1 / 0
Регистрация: 07.06.2019
Сообщений: 13
15.03.2020, 17:52  [ТС]
Я о том, что каким именно образом в самом конструкторе возможно инициализировать объекты типа Line?

C#
1
2
3
4
5
6
7
 public Text(params string[] values)
        {
            for(int i = 0; i<values.Length; ++i)
            {
                text[i] = new Line { line = values[i] };
            }
        }
Я попробовал таким образом, но мне сразу выдало Object reference not set to an instance of an object. Я вроде понимаю саму ошибку, но исправить не могу :/
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
15.03.2020, 18:21
Я думаю вам совсем не нужен класс Line, достаточно хранить строки текста в обычном массиве, из которого легко вытащить кол-во символов из любой строки через индексатор.
0
8 / 6 / 2
Регистрация: 13.03.2020
Сообщений: 14
15.03.2020, 18:26
Лучший ответ Сообщение было отмечено d3mage как решение

Решение

Нужны ли эти Line и почему не строки string ?

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
 
    class Text
    {
        private int Vowels { get { return CountVowels(); } }
 
        public string[] Lines { get; set; }
 
        public Text() { Lines = new[] { "" }; }
 
        public Text(string text)
        {
            Lines = new[] { text };
        }
 
        public Text(string[] lines)
        {
            Lines = lines;
        }
 
        public int CountVowels()
        {
            char[] vowels = new char[] { 'a', 'e', 'i', 'o', 'u' };
            int count = 0;
            foreach (var line in Lines)
            {
                count += line.ToLower().Count(x => vowels.Contains(x));
            }
            return count;
        }
 
        public Text(int size)
        {
            Lines =  Enumerable.Repeat<string>("", size).ToArray();
        }
 
        public int this[int index]
        {
            get => Lines[index].Length;
        }
 
        public override string ToString()
        {
            return String.Join(" ", Lines);
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Text text = new Text(3); // три пустых строки
            Console.WriteLine(text.Lines.Length);
      
            // весь текст из файла как строка 
            Text textFromFile = new Text(File.ReadAllText("text.txt"));     
            Console.WriteLine(textFromFile.CountVowels());
 
            // весь текст из файла как массив строк
            Text linesFromFile = new Text(File.ReadAllLines("text.txt"));
            Console.WriteLine(linesFromFile);
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.03.2020, 18:26
Помогаю со студенческими работами здесь

Свойства и индексаторы (циклическая перестановка индексов)
1) Хотел бы узнать как решить данную задачу более компактным и приятным на вид кодом. Напишите программу с классом, в котором есть...

В класс десятичный счетчик добавить Свойства и индексаторы
Прошу прощения, если вдруг такая тема была (я искала, и не нашла). Ниже написан мой горе-код :) В класс Counter(десятичный счетчик),...

Классы, свойства, индексаторы. Одномерные, прямоугольные и ступенчатые массивы
Требования к программе, общие для всех вариантов: Определить класс Person, который имеет * закрытое поле типа string, в котором...

Классы, свойства, индексаторы. Одномерные, прямоугольные и ступенчатые массивы
Здравствуйте, я делаю лабораторную работу по c# и возникла проблема, помогите пожалуйста. Задание: Требования к программе, общие для...

Что такое свойства, индексаторы, виртуальные методы и абстрактные классы?
Уважаемые,объясните-ка ,пожалуйста,что такое свойства,индексаторы,виртуальные методы и абстрактные классы &quot;НА ПАЛЬЦАХ&quot;. Учебник у...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru