Структуры данных в подразделениях компании Insatiable Enterprises, Inc
Insatiable Enterprises, Inc. — децентрализованная компания-конгломерат, которая состоит из большого количества независимых подразделений, раскиданных по всему миру. Недавно вычислительные мощности компании были связаны умной вычислительной сетью, создающей для пользователя иллюзию, что он работает с единым компьютером Президент компании, когда она в первый раз пытается воспользоваться способностью системы осуществлять доступ к файлам подразделений, с изумлением и ужасом обнаруживает, что, несмотря на то, что все эти файлы реализованы в виде структур данных на Scheme, конкретная структура данных отличается от подразделения к подразделению. Спешно созывается совещание менеджеров подразделений, чтобы найти стратегию, которая позволила бы собрать файлы в единую систему для удовлетворения нужд главного офиса, и одновременно сохранить существующую автономию подразделений.
Покажите, как такую стратегию можно реализовать при помощи программирования, управляемого данными. К примеру, предположим, что сведения о персонале каждого подразделения устроены в виде единого файла, который содержит набор записей, проиндексированных по имени служащего. Структура набора данных от подразделения к подразделению различается. Более того, каждая запись сама по себе — набор сведений (в разных подразделениях устроенный по-разному), в котором информация индексируется метками вроде
address
(адрес) или
salary
(зарплата). В частности:
а. Для главного офиса реализуйте процедуру
get-record
, которая получает запись, относящуюся к указанному служащему, из указанного файла персонала. Процедура должна быть применима к файлу любого подразделения. Объясните, как должны быть структурированы файлы отдельных подразделений. В частности, какую информацию о типах нужно хранить?
б. Для главного офиса реализуйте процедуру
get-salary
, которая возвращает зарплату указанного служащего из файла любого подразделения. Как должна быть устроена запись, чтобы могла работать эта процедура?
в. Для главного офиса напишите процедуру
find-employee-record
. Она должна искать в файлах всех подразделений запись указанного служащего и возвращать эту запись. Предположим, что в качестве аргументов эта процедура принимает имя служащего и список файлов всех подразделений.
г. Какие изменения требуется внести в систему, чтобы внести в центральную систему информацию о новых служащих, когда Insatiable поглощает новую компанию?
Комментарии отсутствуют.