Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Нужна помощь в составлении кода проги в c#

294  1 2 все
Грейс прохожий04.01.08 00:07
Грейс
NEW 04.01.08 00:07 
Доброй ночи! Помогите пожалуйста со следующим заданием, Искала на многих форумах, но не нашла ничего подходящего. Все как-то кусками получается, а в общем ничего. Задание следующее: нужно создать прогу, которая бы выполняла вычисление площади и периметра (А,U) например прямоугольника, треугольника, круга, а также площади и обьема (V,O) квадрата, цилиндра и т.д. Должны быть созданы классы, один так называемый базовый с атрибутами цвета и названия, и getter и setter функциями. Из него наследуются еще 2 класса: площадь и геом.тело, к классу площади относится прямоугольник, треугольник, круг. Где потом и идет вычисление и выдача на консолю. Параметры задаются user-ом. И также соответственно для геом.тело. Я полнейший новичок и создаю прогу в 'microsoft visual c# 2005' так и нужно здесь создавать, даже может быть не смотря на преимущества более актуальной версии (если таковы имеются ). Извиняюсь если не совсем правильно выразилась, задание не на русском, пришлось импровизировать. Заранее благодарна тому кто откликнется !
#1 
AlexNek старожил04.01.08 01:05
AlexNek
NEW 04.01.08 01:05 
в ответ Грейс 04.01.08 00:07
Начните сами с общего, а куски потом вставите.
Первое действие - просто вычислить площадь и периметр одной фигуры без всяких классов.
#2 
Грейс прохожий04.01.08 14:11
Грейс
NEW 04.01.08 14:11 
в ответ AlexNek 04.01.08 01:05
На данный момент так называемый кусок для вычисления площади выглядит так:
{
public class CGeomFigur
{
public static void Main() {}
}
{
class Flaeche:CGeomFigur
{
public static void Main() {}
}
{
Console.WriteLine("Flaeche einer welchen Figur möchten Sie ausrechnen: 1=Rechteck 2=Kreis 3=Dreieck");
Console.Write("Machen Sie Ihre Sätze: !");
string s = Console.ReadLine();
double n = double.Parse(s);
double FR,FK,FD = 0;
double a,b,radius;
switch(n)
{
case 1:
Console.WriteLine("Geben Sie die Seite a ein: ");
a=Console.Read();
Console.WriteLine("Geben Sie die Seite b ein: ");
b=Console.Read();
FR = a * b;
Console.WriteLine("Die Flaeche Ihres Rechtecks beträgt: ", FR);
case 2:
Console.WriteLine("Geben Sie Ihr Radius ein: ");
radius=Console.Read();
double radius;
FK = Math.Pow(radius, 2);
Console.WriteLine("Die Flaeche Ihres Kreises ist: ",FK);
case 3:
Console.WriteLine("Geben Sie die Seite a ein: ");
a=Console.Read();
Console.WriteLine("Geben Sie die Seite b ein: ");
b=Console.Read();
FD = (a * b)/2;
Console.WriteLine("Die Flaeche Ihres Dreiecks beträgt: ", FD);
default:
Console.WriteLine("Nicht definierte Auswahl! Bitte nur 1, 2, oder 3 auswaelen.");
break;
}
Вы как думаете, это можно так использовать?
#3 
AlexNek старожил04.01.08 18:54
AlexNek
NEW 04.01.08 18:54 
в ответ Грейс 04.01.08 14:11
Так думаю будет затруднительно.
Во первых почему 2 майн?
Во вторых, наличие свитча с вычислением и вводом совсем не классовый подход.
Подумайте какие аттрибуты и операции нужны каждому классу. Какие общие операции есть у всех объектов?
#4 
Murr коренной житель04.01.08 19:28
Murr
NEW 04.01.08 19:28 
в ответ AlexNek 04.01.08 18:54
Во первых почему 2 майн?
------
Это не мешает - оба статики в своих классах. Так делают для поклассовой отладки.
Хотя... судя по задаче должен быть еще один класс и это майн() должен быть в нем.
#5 
Murr коренной житель04.01.08 19:34
Murr
NEW 04.01.08 19:34 
в ответ Грейс 04.01.08 14:11
Если Я правильно посчитал, то скобок '{' - 8 штук, а '}' - 5 штук. Так, мягко говоря, не бывает.
Во фрагменте
------
}
{
Console.WriteLine("Flaeche einer welchen Figur möchten Sie ausrechnen: 1=Rechteck 2=Kreis 3=Dreieck");
------
тоже ошибка...
#6 
Грейс прохожий04.01.08 21:44
Грейс
NEW 04.01.08 21:44 
в ответ AlexNek 04.01.08 18:54
->Подумайте какие аттрибуты и операции нужны каждому классу. Какие общие операции есть у всех объектов?
----------------------
Вообщем базовый класс CGeomFigur имеет два атрибута: цвет и название. Этот же класс является наследственным для классов: Flaeche,Umfang,Volumen,Oberflaeche.
А операции, я думаю, это и есть диалог с user-ом, где задаются параметры и потом их вычисление! Поэтому и switch, мне так показалось удобней
.
----------------------
->Во вторых, наличие свитча с вычислением и вводом совсем не классовый подход.
----------------------
А как можно тогда по-другому?
#7 
Грейс прохожий04.01.08 21:54
Грейс
NEW 04.01.08 21:54 
в ответ Murr 04.01.08 19:34
Да насчет скобок вы правы, подредактирую , спасибо!
-----------------------------
->Console.WriteLine("Flaeche einer welchen Figur möchten Sie ausrechnen: 1=Rechteck 2=Kreis 3=Dreieck");
------
тоже ошибка...
---------------------------
Но ошибки, если честно не вижу , может подскажите поточней?
#8 
Murr коренной житель05.01.08 12:15
Murr
NEW 05.01.08 12:15 
в ответ Грейс 04.01.08 21:44
Поэтому и switch, мне так показалось удобней
------
Сколько изиенений нужно будет вносить, если потребуется добавить фигуру? Правильный ответ - ноль, при другом - ищите ошибку...
#9 
AlexNek старожил05.01.08 12:31
AlexNek
NEW 05.01.08 12:31 
в ответ Грейс 04.01.08 21:44
В ответ на:
Вообщем базовый класс CGeomFigur имеет два атрибута: цвет и название.

Это согласно задания, а для наследуемых классов? Эти аттрибуты Вы кстати и не вводите.
В ответ на:
Этот же класс является наследственным для классов:

Для меня это предложение абосолютно непонятно. Обычно горорят так:
От этого класса наследуются классы....
Этот класс являянтся базовым для классов...
В ответ на:
А операции, я думаю, это и есть диалог с user-ом, где задаются параметры и потом их вычисление!

Направление правильное. Ввод, вычисления, вывод.
Тепрь запишити в произвольной форме \Можно и в UML\ какие аттрибуты и операции должен иметь каждый класс.
В ответ на:
Поэтому и switch, мне так показалось удобней

switch - это не страшно, важно то что вы в нем делаете. А то что там деалется это обычный С. В switch можно было бы создавать классы, но не больше.
#10 
AlexNek старожил05.01.08 13:07
AlexNek
NEW 05.01.08 13:07 
в ответ Murr 04.01.08 19:28
В ответ на:
Это не мешает - оба статики в своих классах.

Компилятору то не мешает, но глаза режет.
В ответ на:
Так делают для поклассовой отладки

Ниеогда так не делал. Возможно из за плохой наследственности . В голове твердо сидит один майн.
#11 
Murr коренной житель05.01.08 22:07
Murr
NEW 05.01.08 22:07 
в ответ Грейс 04.01.08 21:54
может подскажите поточней?
------
Кое-что просто лишнее, кое-что другое - просто отсутствует...
#12 
Murr коренной житель05.01.08 22:12
Murr
NEW 05.01.08 22:12 
в ответ AlexNek 05.01.08 13:07
В голове твердо сидит один майн.
-----
Ну и как тогда писать именно класс и все необходимые проверки функциональности? Вот и делается майн() в классе, инстансе и поехали...
#13 
  scorpi_ скептик06.01.08 14:13
NEW 06.01.08 14:13 
в ответ Murr 05.01.08 22:12
По-хорошему используется NUnit, JUnit, Boost.Test. Использование Main для тестирования - это позавчерашний день.
#14 
Murr коренной житель06.01.08 14:34
Murr
NEW 06.01.08 14:34 
в ответ scorpi_ 06.01.08 14:13
По-хорошему используется NUnit, JUnit, Boost.Test.
------
Значит Я опять отстал... :( Надо догонять!!! :) Что порекомендуешь из литературы?
#15 
NightWatch старожил06.01.08 21:59
NightWatch
NEW 06.01.08 21:59 
в ответ Грейс 04.01.08 14:11
  scorpi_ скептик07.01.08 15:55
NEW 07.01.08 15:55 
в ответ Murr 06.01.08 14:34
Ты ведь дотнетчик? Значит тебя в первую очередь интересует NUnit? Мне известна только эта книга - "Pragmatic Unit Testing in C# with NUnit", правда она получила слабые оценки на amazon'е, хотя авторы и весьма уважаемы. Сам я её не читал, так как дотнетом не занимаюсь. С учётом амазоновских оценок возможно есть смысл почитать книги по JUnit - "JUnit in Action", "Pragmatic Unit Testing in Java with JUnit" ибо принцип работы в общем-то одинаков. Есть ещё рекомендуемая книга "eXtreme .NET", хотя по тестированию там только одна глава.
#17 
Murr коренной житель07.01.08 16:55
Murr
07.01.08 16:55 
в ответ scorpi_ 07.01.08 15:55
Ты ведь дотнетчик?
-----
Вообще-то - всеядный - на чем дают - на том пишу. Иногда - на 4-5 сразу.
Просто последний большой проект был на DotNet'е.
Спасибки за референсы - кое-что слил - буду читать.
Эээ... В FAQ вроде не было этих ссылок. Есть смысл добавить. :)
#18 
Murr коренной житель07.01.08 16:57
Murr
NEW 07.01.08 16:57 
в ответ NightWatch 06.01.08 21:59
А что чел смог почерпнуть из приведенного кода? Практически - ничего, ибо не понял как от задания перейти к коду...
#19 
  scorpi_ скептик07.01.08 17:32
NEW 07.01.08 17:32 
в ответ Murr 07.01.08 16:55
Если всеядный, то добавь ещё "JUnit Recipes"
#20 
1 2 все