添付ファイルの追加

ログイン済のユーザのみが添付ファイルをアップロード出来ます。

添付ファイル一覧

Kind Attachment Name Size Version Date Modified Author Change note
png
utility_class1.png 5.3 kB 2 01-7-2011 01:01 ytp
png
utility_class2.png 6.4 kB 2 01-7-2011 01:02 ytp
png
utility_class3.png 8.3 kB 2 01-7-2011 01:02 ytp
png
utility_class4.png 4.3 kB 1 02-7-2011 01:24 ytp
png
utility_class5.png 4.5 kB 2 02-7-2011 02:07 ytp
png
utility_class6.png 30.7 kB 1 05-7-2011 02:05 ytp
png
utility_class7.png 9.6 kB 5 31-12-2011 20:50 ytp
png
utility_class8.png 12.3 kB 5 31-12-2011 20:50 ytp
png
utility_class9.png 7.4 kB 1 22-7-2011 03:29 ytp

This page (revision-42) was last changed on 14-8-2016 22:57 by ytp

This page was created on 12-4-2011 01:29 by ytp

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 102 removed 104 lines
!3.異なるクラスの異なる属性を共通的に処理する場合
氏名クラスを例にして説明します。
%%prettify
{{{
public class PersonName {
private String familyName;
private String givenName;
public PersonName(String famiLyName, String givenName) {
:
:
}
}}}
/%
この中に
*フルネームを返す
というメソッドがあったとします。そのメソッドの要件は、
*姓と名の間にスペースを1つ入れて返す
というものです。以下です。
%%prettify
{{{
public String getFullName() {
return familyName + " " + givenName;
}
}}}
/%
一方で住所クラスがあります。属性は郵便番号と居所です。
%%prettify
{{{
public class Address {
private String zipCode;
private String location;
public Address(String zipCode, String location) {
:
:
}
}}}
/%
この中に住所全体を返すメソッドを実装します。要件は、
*郵便番号と居所の間にスペースを1つ入れて返す
です。
%%prettify
{{{
public String getAddress() {
return zipCode + " " + location;
}
}}}
/%
何やら似ていますね。そうgetFullName()メソッドとそっくりです。なぜなら、
*AとBの間にスペースを1つ入れて返す
と考えれば同じだからです。そこで関数を作ってそれを利用するように変更します。
%%prettify
{{{
public class StringFunctions {
public static String joinWithSpace(String a, String b) {
return a + " " + b;
}
}
public String getFullName() {
return StringFunctions.joinWithSpace(familyName, givenName);
}
public String getAddress() {
return StringFunctions.joinWithSpace(zipCode, location);
}
}}}
/%
ところが仕様変更が発生し、フルネームの場合は間のスペースを2つにしなければならなくなりました。そこで以下のように修正します。
%%prettify
{{{
public class StringFunctions {
public static String joinWithSpace(String a, String b) {
return StringFunctions.joinWithSpace(a, b, 1);
}
public static String joinWithSpace(String a, String b, int spaceSize) {
StringBuffer result = new StringBuffer(a);
for (int i = 0; i < spaceSize; i++) {
result.append(" ");
}
result.append(b);
return result.toString();
}
}
public String getFullName() {
return StringFunctions.joinWithSpace(familyName, givenName, 2);
}
}}}
/%
修正箇所はPersonName#getFullName()のみで、かつ、PersonNameクラスを利用している各アプリケーションの修正は一切不要です。社員クラスから利用していようが取引先クラスから利用していようが、人の姓名の間にはスペース2つが挿入されるように一括して変わります。\\
ただしこのような関数は
*経験のある設計者がきちんと設計した上で実装する
必要があります。そうしないと、
*データ構造を持たない処理が乱造される
結果になります。一つの指標としては、
*この種類の関数は小粒クラスからのみ利用する
という運用規則を用いることが言えます。小粒クラスは言ってみれば最小単位のクラスなので、それらに共通する場合は関数が必要なケースかもしれないと検討することには意義があると言えます。
Version Date Modified Size Author Changes ... Change note
42 14-8-2016 22:57 4.816 kB ytp to previous
41 10-8-2016 19:57 5.217 kB JimmiXS to previous | to last cbhXdk http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com
« This page (revision-42) was last changed on 14-8-2016 22:57 by ytp