Статические и константные члены класса.
Статические члены класса Переменные и члены класса, объявленные с модификатором доступа static, называются статическими членами класса. Cтатические переменные и методы доступны без создания объекта данного класса. Имя статической переменной квалифицируется именем класса с использованием операции принадлежности :: , а не именем экземпляра класса. Например: class A { public: static int iStat; };int main(int argc, char* argv[]) { A:: iStat = 123;}Статические методы могут вызывать и использовать только другие статические методы и статические переменные. Из статического метода нельзя выполнять вызов не статического метода - члена класса. Статическую переменную можно рассматривать как аналог глобальной переменной, которая связана с конкретным классом. Часто статические переменные называют переменными класса, а не статические переменные - переменными экземпляра. Для статических переменных могут использоваться указатели. Например: class A{ public: static int iStatVar; };int main(int argc, char* argv[]){int A:: iStatVar = 0;int *piStatVar = &A:: iStatVar;}При использовании статических переменных указатели всегда являются указателями на существующий тип (в данном примере на тип int ), а не на тип класса. Для того чтобы создать и использовать статическую переменную, следует: 1. Объявить (как правило, в заголовочном файле) статическую переменную как член класса. Например: static int iStat;. 2. Для выделения памяти под эту переменную ее повторно следует объявить в модуле компиляции, в котором она будет использоваться, квалифицируя имя статической переменной именем класса. Например: int A::iStat; 3. Выполнить инициализацию статической переменной (по умолчанию статическая переменная типа int имеет значение 0 ). Например: A::iStat=123; Константные функции-члены класса В объявлении функции после списка параметров можно добавить модификатор const. Это будет означать, что функция не меняет состояние объекта, к которому она применяется. Суффикс const является частью типа функции и должен записываться, когда функция определяется вне класса.
Константную функцию-член класса можно вызвать как для константного, так и для неконстантного объекта, в то время как неконстантную функцию можно вызвать только для объекта, не являющегося константой.
Строки в C#. Строка в C# — это массив знаков, объявленный с помощью ключевого слова string. Строковый литерал объявляется с помощью кавычек, как показано в следующем примере. string s = "Hello, World!"; Переприсваивание Строки можно целиком переприсваивать: string s1 = "Hello"; string s2 = s1; //переприсваиваем Объединение строк Можно объединять строки с помощью оператора +, как показано в следующем примере: string s1 = "orange"; string s2 = "red"; s1 += s2; Console.WriteLine(s1); // напечатается "orangered" Escape-знаки Строки могут содержать escape-знаки, такие как "\n" (новая строка) и "\t" (табуляция). Пример: string hello = "Hello\nWorld!"; Console.WriteLine(hello); /* Напечатается Hello World! */ string s = "чтобы вставить \"кавычки\" в строку используем обратный слэш"; Console.WriteLine(s); Если требуется добавить в строку обратную косую черту, перед ней нужно поставить еще одну обратную косую черту. Следующая строка: string filePath = "\\\\My Documents\\"; Console.WriteLine(filePath); /* Напечатается: \\My Documents\ */ Точные строки: символ @ Символ @ служит для того, чтобы конструктор строк пропускал escape-знаки и переносы строки. Следующие две строки являются идентичными: string p1 = "\\\\My Documents\\My Files\\"; string p2 = @"\\My Documents\My Files\"; Чтобы поставить в точной строке знак двойных кавычек, нужно использовать по два таких знака, как показано в следующем примере: string s = @"You say ""goodbye"" and I say ""hello"""; Доступ к отдельным знакам Квадратные скобки [] служат для доступа к отдельным знакам в объекте string, но при этом возможен доступ только для чтения: string str = "test"; char x = str[2]; // x = 's'; string s5 = "Printing backwards"; for (int i = 0; i < s5.Length; i++) Console.Write(s5[s5.Length - i - 1]); // напечатается "sdrawkcab gnitnirP" Извлечение подстрок Для извлечения подстроки из строки используется метод Substring. string s3 = "Visual C# Express"; string s4 = s3.Substring(7, 2); Console.WriteLine(s4); // напечатается "C#" Замена по образцу Для замены подстроки в строке по образцу используется метод Replace. string s3 = "Visual C# Express"; string s5 = s3.Replace("C#", "Basic"); Сonsole.WriteLine(s5); // напечатается "Visual Basic Express" Смена регистра Чтобы изменить регистр букв в строке (сделать их заглавными или строчными) следует использовать ToUpper()илиToLower(), как показано в следующем примере: string s6 = "АлтГТУ"; Console.WriteLine(s6.ToUpper()); // Напечатается АЛТГТУ Console.WriteLine(s6.ToLower()); // Напечатается алтгту Console.WriteLine(s6); // Напечатается АлтГТУ Сравнения Самый простой способ сравнения двух строк — использовать операторы == и !=, осуществляющие сравнение с учетом регистра: string color1 = "red"; string color2 = "green"; string color3 = "red"; if (color1 == color3) Console.WriteLine("Строки равны"); if (color1 != color2) Console.WriteLine("Строки не равны"); Не допускается использование >,<,>=,<= для сравнения строк. Для строковых объектов существует метод CompareTo(), возвращающий целочисленное значение, зависящее от того, что одна строка может быть меньше (<), равна (==) или больше другой (>). При сравнении строк используется значение Юникода, при этом значение строчных букв меньше, чем значение заглавных. Дополнительные сведения о правилах сравнения строк см. в разделах CompareTo(). string string1 = "ИИТ"; string string2 = "Иит"; int result = string1.CompareTo(string2); if (result > 0) Console.WriteLine("{0} больше чем {1}", string1, string2); else if (result == 0) Console.WriteLine("{0} равно {1}", string1, string2); else if (result < 0) Console.WriteLine("{0} меньше чем {1}", string1, string2); // Напечатается ИИТ больше чем Иит
Инкапсуляция. Инкапсуляция (программирование) - это использование модификаторов доступа с целью сокрытия частей программного кода от конечного пользователя. Под ним, в свою очередь, подразумевается разработчик или наследующий объект. Суть понятия "инкапсуляция" Дефиниция определяет, что под инкапсуляцией подразумевается сокрытие всего или части программного кода. Суть же понятия "инкапсуляция" заключается в манипулировании модификаторами доступа. Это означает, что разработчик сам решает, какие свойства, методы и классы будут открыты классу-клиенту, а какие - скрыты. Модификаторы доступа Существуют такие модификаторы доступа, которыми, в числе прочих, способна манипуляривать инкапсуляция (программирование Java): public ("паблик" - публичный, открытый, доступ) - общий доступ как для текущих объектов и классов, так и для внешнего мира; private ("прайват" - приватный, частный, скрытый доступ) - закрытый доступ, суть которого полностью противоположна предыдущему. Обеспечивает доступ только из текущего класса; protected ("протектед" - защищенный, полускрытый, доступ) - доступ для текущего класса и производных от него; по умолчанию - неуказанный модификатор доступа подразумевает, что поле/метод видно для всего текущего пакета классов. В языке C# ("Си Шарп"), помимо указанных (исключая последний), есть еще такие модификаторы: internal ("интернал" - внутренний доступ) - общедоступность в текущем сборе, закрытый доступ по всем остальным случаям; internal protected ("интернал протектед" - внутренний защищенный доступ) - объединение двух модификаторов в один, в котором проявляются свойства обоих из них. Роль инкапсуляции Механизм инкапсуляции позволяет исключить внешнее влияние на программный код и неверное использование заложенных в нем данных. Это происходит за счет объединения кода и данных в одно целое.
Популярное: Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (524)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |