Объектно-ориентированное программирование в C#
Дополнительные материалы к занятию можно скачать здесь.
Упражнение 7.1. Создание простого класса
Создаем новое консольное приложение C#. Называем проект practice_3_1.
Наберите в окне кода следующую программу:
using System; class goods { public string ProductName; public DateTime ExpireDate; public double Price; } class Example { static void Main() { goods Product = new goods(); Product.ProductName = "Хлеб Изобилие"; Product.ExpireDate = new DateTime(2011, 5, 1, 8, 30, 52); Product.Price = 43.54; string str; str = "Товар: " + Product.ProductName + "\nСрок годности: " + Product.ExpireDate + "\nЦена: " + Product.Price + " рубля"; Console.WriteLine(str); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } }
Получаем следующий результат:
Упражнение 7.2. Создание двух экземпляров одного класса
Создаем новое консольное приложение C#. Называем проект practice_3_2.
Наберите в окне кода следующую программу:
using System; class goods { public string ProductName; public DateTime ExpireDate; public double Price; } class Example { static void Main() { goods Bread = new goods(); Bread.ProductName = "Хлеб Изобилие"; Bread.ExpireDate = new DateTime(2011, 5, 1, 8, 30, 52); Bread.Price = 43.54; goods Milk = new goods(); Milk.ProductName = "Молоко"; Milk.ExpireDate = new DateTime(2011, 5, 5, 6, 30, 52); Milk.Price = 35.6; string str; str = "Товар: " + Bread.ProductName + "\nСрок годности: " + Bread.ExpireDate + "\nЦена: " + Bread.Price + " рубля"; str += "\nТовар: " + Milk.ProductName + "\nСрок годности: " + Milk.ExpireDate + "\nЦена: " + Milk.Price + " рубля"; Console.WriteLine(str); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } }
Получаем следующий результат:
Упражнение 7.3. Знакомство с методами класса
Создаем новое консольное приложение C#. Называем проект practice_3_3.
Наберите в окне кода следующую программу:
using System; class shape { public double Length(double r) { double l; l = 2 * Math.PI * r; return l; } public double Area(double r) { double s; s = Math.PI * Math.Pow(r, 2); return s; } } class Example { static void Main() { shape figure = new shape(); double a; a = 10; double l, s; l = figure.Length(a); s = figure.Area(a); string str; str = "Радиус равен " + a; str += "\nДлина окружности равна " + l; str += "\nПлощадь круга равна " + s; Console.WriteLine(str); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } }Листинг .
Получаем следующий результат:
Упражнение 7.4. Знакомство с методами класса (продолжение)
Создаем новое консольное приложение C#. Называем проект practice_3_4.
Наберите в окне кода следующую программу:
using System; class shape { public double r; public double SphereArea() { double s; s = 4 * Math.PI * Math.Pow(r, 2); return s; } public double SphereVolume() { double v; v = 4 * Math.PI * Math.Pow(r, 3) / 3; return v; } } class Example { static void Main() { shape figure = new shape(); double a; a = 10; figure.r = a; double v, s; s = figure.SphereArea(); v = figure.SphereVolume(); string str; str = "Радиус равен " + a; str += "\nПлощадь сферы равна " + s; str += "\nОбъем шара равен " + v; Console.WriteLine(str); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } }Листинг .
Получаем следующий результат:
Упражнение 7.5. Нахождение широты, долготы и высоты спутника ГЛОНАСС исходя из его геоцентрических координат
Даны следующие геоцентрические координаты спутника:
Геоцентрические координаты связаны с широтой и долготой следующими соотношениями:
Найдем радиус-вектор , соединяющий объект с центром масс Земли:
Широта
Долгота
Для нахождения высоты над уровнем моря мы вычтем радиус Земли из радиус-вектора :
Создаем новое консольное приложение C#. Называем проект practice_3_5.
Наберите в окне кода следующую программу:
using System; class Satellite { public double x; public double y; public double z; double R0 = 6373637.00; //Радиус Земли public double Height() { double h; h = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2) + Math.Pow(z, 2)) - R0; return h; } public double Latitude() { double phi; phi = Math.Atan(z / Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2))) * 180 / Math.PI; return phi; } public double Longitude() { double lambda; lambda = Math.Atan(y / x) * 180 / Math.PI; return lambda; } } class Example { static void Main() { double x, y, z; x = 2616905.988; y = 5135967.188; z = 3003938.098; Satellite GLONASS = new Satellite(); GLONASS.x = x; GLONASS.y = y; GLONASS.z = z; double h, phi, lambda; h = GLONASS.Height(); phi = GLONASS.Latitude(); lambda = GLONASS.Longitude(); string str; str = "Высота над уровнем моря: " + h + " метра" + "\nГеографическая широта: " + phi + " градуса" + "\nГеографическая долгота " + lambda + " градуса"; Console.WriteLine(str); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } }Листинг .
Получаем следующий результат:
Задание: Преобразование декартовых координат {x,y,z} в геодезические {H,L,B}
Связь между геодезическими параметрами точки пространства и декартовыми координатами можно определить следующим образом:
где:
- - радиус кривизны в точке местной вертикали ,
- эксцентриситет эллипсоида,
- - параметр сжатия эллипсоида.
Для преобразования координат мы воспользуемся алгоритмом, описанном в ГОСТ Р 51794-2001 (…Методы преобразований координат определяемых точек), внеся в него небольшие изменения.
Алгоритм предполагает следующую последовательность действий:
- Вычислить вспомогательную величину по формуле
- Проанализировать значение следующим образом:
- а) если , то
- б) если , то
при этом
- Проанализировать значение :
- а) если , то
- б) во всех других случаях вычисления выполняют следующим образом:
Найти вспомогательную величину по следующей формуле:
Геодезическая широта B находится следующим образом:
Итак, мы имеем следующие исходные данные:
- Вычислим вспомогательную величину :
- Так, как , то пункт 2a пропускаем. Переходим к пункту 2б.
Найдем геодезическую долготу :
Так как и , то .
Найдем значение геодезической долготы в градусах: - Проанализируем значение . Так как , то пункт 3а пропускаем и переходим к пункту 3б. Найдем вспомогательную величину : Найдем геодезическую широту : Переведем радианы в градусы: Найдем геодезическую высоту :
Разработать соответствующую программу