Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ помогите исправить и разобраться. ООП.

Автор: Nastasia 24.09.2009 10:38

задача простенькакя, а я совсем новичок в этом деле, хотелось бы понять и разобраться.
Состроить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть возможность:
раздельного изменения составных частей адреса;
создания объектов этого класса;
уничтожения объектов этого класса.
поиска необходимого адреса по названию
Написать программу, демонстрирующую работу с этим классом.

type
pochta=class
index,dom:integer;
oblast,gorod,ulica:string;
procedure Changeindex(a:integer);
procedure Changedom(b:integer);
procedure Changeoblast(c:string);
procedure Changegorod(d:string);
procedure Changeulica(f:string);
procedure Input ; //процедура для ввода данных
procedure ShowInfo; //процедура демонстрируящая информацию
end;
var adres:pochta;a,b:integer;
c,d,f:string;
procedure pochta.Changeindex(a:integer);//изменение номера индекса
begin
index:=a;
end;
procedure pochta.Changedom(b:integer);//изменение номера дома
begin
dom:=b;
end;
procedure pochta.Changeoblast(c:string);//изменение области
begin
oblast:=c;
end;
procedure pochta.Changegorod(d:string);//изменение города
begin
gorod:=d;
end;
procedure pochta.Changeulica(f:string);//изменение улицы
begin
ulica:=f;
end;
procedure pochta.input;
begin
write('Oblast- ');
readln(oblast);
write('Gorod- ');
readln(gorod);
write('Ulica- ');
readln(ulica);
write('Dom- ');
readln(dom);
write('Index- ');
readln(self.index);
end;
procedure pochta.ShowInfo;
begin
writeln('oblast- ',oblast,' gorod- ',gorod,
' ulica- ',ulica,' dom- ',dom,' index- ',index);
end;
begin
adres:=pochta.create;
adres.Input;
write('Vvedite a= ');
readln;
adres.Changeindex(a);
adres.ShowInfo;
write('Vvedite b= ');
readln;
adres.Changedom(b);
adres.ShowInfo;
write('Vvedite c= ');
readln;
adres.Changeoblast©;
adres.ShowInfo;
write('Vvedite d= ');
readln;
adres.Changegorod(d);
adres.ShowInfo;
write('Vvedite f= ');
readln;
adres.Changeulica(f);
adres.ShowInfo;
adres.Free;
writeln('enter for exit');
readln;




Автор: andriano 24.09.2009 12:04

Ну, во-первых, в приведенном коде я не увидел ни создания, ни уничтожения объекта, как того требует задание. Поиска, кстати, тоже.
Во-вторых, такой способ представления информации крайне неудобен. Логичнее было бы ввести отдельный класс области (индекс; название; возможно, список городов), города (индекс; индекс области; название; возможно, список улиц), отдельный класс улицы (индекс; индекс города; название; возможно, список или диапазон номеров домов), дом (индекс; индекс улицы (предусмотреть для дома минимум 2 адреса - для домов, находящихся на пересечении улиц; предусмотреть возможность буквенного окончания и номера корпуса).
Сщбственно, так и поиск по адресу будет реализовать значительно проще.
Кроме того, в процедурах изменения нужно предусмотреть контроль на допустимость значения. Например, номер дома не может быть отрицательным.