「AP過去問 令和6年度秋期 午後 問8 情報システム開発」の版間の差分

提供:yonewiki
編集の要約なし
1行目: 1行目:
<yjavascript>
<yjavascript>
<script type='text/x-mathjax-config'>
MathJax = {
  tex: {
    packages: ['base'],        // extensions to use
    inlineMath: [              // start/end delimiter pairs for in-line math
      ['\\(', '\\)'],
      ['\\@', '\\@']
    ],
    displayMath: [            // start/end delimiter pairs for display math
      ['
,'],
      ['\\[', '\\]']
    ],
    processEscapes: true,      // use $ to produce a literal dollar sign
    processEnvironments: true, // process
\begin{xxx}...\end{xxx}
outside math mode
    processRefs: true,        // process ??? outside of math mode
    digits: /^(?:[0-9]+(?:\{,\}[0-9]{3})*(?:\.[0-9]*)?|\.[0-9]+)/,
                              // pattern for recognizing numbers
    tags: 'none',              // or 'ams' or 'all'
    tagSide: 'right',          // side for \tag macros
    tagIndent: '0.8em',        // amount to indent tags
    useLabelIds: true,        // use label name rather than tag for ids
    multlineWidth: '85%',      // width of multline environment
    maxMacros: 1000,          // maximum number of macro substitutions per expression
    maxBuffer: 5 * 1024,      // maximum size for the internal TeX string (5K)
    baseURL:                  // URL for use with links to tags (when there is a <base> tag in effect)
      (document.getElementsByTagName('base').length === 0) ?
        '' : String(document.location).replace(/#.*$/, ''))
  }
  "HTML-CSS": {
    availableFonts :['Neo Euler Medium'],
    preferredFont: null,
    webFont :'Neo Euler Medium'
  }
};
</script>
</script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<!--script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_HTML-full'-->
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_HTML-full'>
<style>
  MathJax.Hub.Config({
mjx-container mjx-utext { font-family: 'Neo Euler Medium', Meiryo !important; }
    "fast-preview": {disabled:true},
mjx-container svg text { font-family: 'Neo Euler Medium', Meiryo !important; }
    tex2jax: {
mjx-container[display="true"] { margin: 0 !important; padding: 2px 0 4px 0 !important; }
      preview: "none",
mjx-mid mjx-c::before { padding-top: 0.13em !important; }
      inlineMath: [['\\@','\\@'],['\\(','\\)']],
</style>
      displayMath: [['
,'],['\\[
','\\]']],
      skipTags: ["code"],
      processEscapes: true
    },
    "HTML-CSS": {
      undefinedFamily: "'Neo Euler Medium', Meiryo, STIXGeneral, 'Arial Unicode MS', serif",
      webFont :"Neo Euler Medium"
    }
  });
</script>
<script>
</yjavascript>
</yjavascript>
[[応用情報処理技術者#AP_過去問題_午後|AP 過去問題 午後]]に戻る。
[[応用情報処理技術者#AP_過去問題_午後|AP 過去問題 午後]]に戻る。
52行目: 28行目:
== '''令和6年度秋期 午後 問8 情報システム開発(AIプロンプト向け)''' ==
== '''令和6年度秋期 午後 問8 情報システム開発(AIプロンプト向け)''' ==
<div class="mathjax">
<yjavascript></script>
<style>
mjx-container *:not(mjx-utext) {
  font-family: "Neo Euler Medium" !important;
}
</style>
$$ \begin{align*}
  y=x^{2} \cdots 数式1
\end{align*} $$
<script></yjavascript>
x=b±b24ac2a
<yjavascript></script>
01x2dx=13
<script></yjavascript>
<yjavascript></script>
A=(1234),B=(5678),A×B=(19224350)
<script></yjavascript>
<yjavascript></script>
sin(3θ)=3sin(θ)4sin3(θ)
<script></yjavascript>
</div>


 
 

2024年12月20日 (金) 22:24時点における版

'],['\\[','\\]']], skipTags: ["code"], processEscapes: true }, "HTML-CSS": { undefinedFamily: "'Neo Euler Medium', Meiryo, STIXGeneral, 'Arial Unicode MS', serif", webFont :"Neo Euler Medium" } }); AP 過去問題 午後に戻る。

AP過去問_令和6年度秋期_午後_問7_組込みシステム開発の同じ回の前の問題へ移動。

AP過去問_令和6年度秋期_午後_問9_プロジェクトマネジメントの同じ回の次の問題へ移動。

令和6年度秋期 午後 問8 情報システム開発(AIプロンプト向け)

 

令和6年度秋期 午後 問8 情報システム開発(問題原文)

■オブジェクト指向設計に関する次の記述を読んで、設問に答えよ。

 M社は、企業内の複数の情報システムを接続するデータ連携ハブを製造する会社である。M社のデータ連携ハブは、企業の基幹システムを構成するERP(Enterprise Resuource Planning)ソリューションやクラウドサービスとデータ連携するための部品であるコネクタの種類が多いことが人気を呼び、売上を増大させている。

 M社には三つの事業所に合計約100名が在籍しており、開発部がソフトウェアの開発を行っている。M社のデータ連携ハブに含まれるコネクタを実現するソフトウェアは、ERPソリューションやクラウドサービスの仕様変更に合わせて頻繁に修正する必要がある。また、同じプログラムコードが複数個所にコピーされているなどの原因によって保守性が低いという課題があり、コネクタの開発コストが増大している。そこで、M社では、コネクタの開発コストを低減させるために、コネクタを構成するソフトウェアを再設計することいなり、開発部のN君が担当することになった。


[コネクタの利用方法]

 N君は、M社のデータ連携ハブのコネクタの利用方法を整理した。図1はデータ連携ハブを用いてデータ送信元システムからデータ送信先システムへ組織データを送信する例である。


図1 データ連携ハブを用いた組織データの送信の例


 データ連携ハブがFTPSを用いて人事システムからデータフォーマットがCSV形式のデータを取得し、データフォーマットや通信プロトコルを変換して別の三つのシステムに送信している。このときデータ連携ハブのコネクタの役割は、通信プロトコルやデータフォーマットの変換である。


[オブジェクト指向に関する調査]

 N君は、コネクタを再設計するために、オブジェクト指向について調査した。オブジェクト指向では、ソフトウェアを部品化し、部品の組合せによって目的のソフトウェアを作る。この方法では、データとそのデータに対する処理を一つのオブジェクトにまとめる という設計指針のもと、外部公開するメソッドを定義してオブジェクト内のデータや処理の変更がオブジェクト外に与える影響を小さくする。また、あるオブジェクトの特性を他のオブジェクトに引き継ぐ が可能であり、開発コストを低減できる。また、同名のメソッド呼出しに対してオブジェクトの種類によって異なる処理を実効する を実現することが可能である。


[コネクタのクラス設計]

 N君は、コネクタの利用方法を考慮し、オブジェクト指向を用いてコネクタに関係するクラスを設計した。N君が設計したクラス図(抜粋)を図2に示す。


図2 N君が設計したクラス図(抜粋)


 まず、送受信するデータのデータ項目を定義する連携データクラスとそれを親クラスとする組織データクラスを設計し、各クラスに必要な属性とメソッドを設計した。連携データクラスの論理削除属性は、組織データクラスのメソッドからアクセス

 フォーマットクラス、CSVクラス、XMLクラスは、送信するデータをCSV形式やXML形式に変換(シリアライズ)したり、受信したCSV形式やXML形式のデータを解析して、連携データクラスのインスタンスを生成(デシリアライズ)したりするクラスである。また、XMLクラスのシリアライズのように、親クラスと同じ名称・引数・戻り値のメソッドを定義することを という。

 プロトコルクラス、FTPSクラス、HTTPSクラスは、データ送受信のためのクラスである。コネクタクラス、組織コネクタクラスは、コネクタを実現するためのクラスであり、送受信するデータのデータ項目に応じて処理を行うものである。


 図2で設計されたクラスを用いて、図1に記載のデータ連携ハブから製造システム向けにデータを送信する組織コネクタクラスのインスタンスを作成する場合、 クラス及び クラスから生成したインスタンスを引数に、組織コネクタクラスのインスタンスを作成する。 クラスの送信メソッドの中ではフォーマットクラスのシリアライズメソッドが呼び出されるが、実際には クラスのシリアライズメソッドが呼び出される。


[コネクタの修正]

 N君は、今後予想されるコネクタの修正時に、図2で設計したクラスに対して少ない修正で対応できるか机上で検証した。

 図1に記載の人事システムに格納されている研修受講記録データを新たに他システムへ送信する必要がある場合には、①新しいクラスを二つ作成すればよい。また、CSVファイルやXMLファイルの中の口座名などの文字列の文字コードを変換する共通機能が必要となった場合には、②図2ある一つのクラスに文字コード変換のメソッドを追加すればよい。


 その後、N君は、コネクタの再設計に関する必要な作業を完了した。


設問1 本文中の に入れる適切な字句を答えよ。

設問2 [コネクタのクラス設計]について答えよ。

(1) 図2中の に入れる適切な字句を答えよ。

(2) 本文中の に入れる適切な字句を回答群の中から選び、記号で答えよ。

回答群

ア オーバーライド

イ オーバーロード

ウ コンストラクタ

エ できない

オ できる

カ デストラクタ

(3) 本文中の に入れる適切なクラス名を図2中の字句を用いて答えよ。

設問3 [コネクタの修正]について答えよ。

(1) 本文中の下線①について、作成する二つのクラスは、図2中の異なるクラスを親クラスとする必要がある。作成するクラスの親クラスとすべきクラス名を図2中の字句を用いて全て答えよ。

(2) 本文中の下線②について、文字コード変換のメソッドを追加すべきクラス名を図2中の字句を用いて答えよ。

 

回答・解説

 

AP過去問_令和6年度秋期_午後_問7_組込みシステム開発の同じ回の前の問題へ移動。

AP過去問_令和6年度秋期_午後_問9_プロジェクトマネジメントの同じ回の次の問題へ移動。

AP 過去問題 午後に戻る。