Объектно-ориентированное программирование в 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}
Связь между геодезическими параметрами
точки пространства и декартовыми координатами
можно определить следующим образом:
![x=(N+H)\cos B\cos L,\;y=(N+H)\cos B\sin L,\;z=[(1-e^2)N+H]\sin B,](/sites/default/files/tex_cache/61184509f7bd135101a3117c278ccc7a.png)
где:
-
- радиус кривизны в точке местной вертикали
, -
эксцентриситет эллипсоида, -
- параметр сжатия эллипсоида.
Для преобразования координат мы воспользуемся алгоритмом, описанном в ГОСТ Р 51794-2001 (…Методы преобразований координат определяемых точек), внеся в него небольшие изменения.
Алгоритм предполагает следующую последовательность действий:
- Вычислить вспомогательную величину
по формуле
- Проанализировать значение
следующим образом:
- а) если
, то
- б) если
, то
при этом
- а) если
- Проанализировать значение
:
- а) если
, то
- б) во всех других случаях вычисления выполняют следующим образом:
Найти вспомогательную величину
по следующей формуле:Геодезическая широта B находится следующим образом:


- а) если
Итак, мы имеем следующие исходные данные:

- Вычислим вспомогательную величину
:

- Так, как
, то пункт 2a пропускаем. Переходим к пункту 2б.
Найдем геодезическую долготу
:
Так как
Найдем значение геодезической долготы в градусах:
и
, то
.
- Проанализируем значение
. Так как
, то пункт 3а пропускаем и переходим к пункту 3б. Найдем вспомогательную величину
:
Найдем геодезическую широту
:
Переведем радианы в градусы:
Найдем геодезическую высоту
:


Разработать соответствующую программу




