1์ฅ. ๊นจ๋ํ ์ฝ๋
์์ด์ ๋์
๋ชจ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ธฐํ์ ๋ง์ถ๋ ค๋ฉด ๋์ ์ฝ๋๋ฅผ ์์ฐํ ์๋ฐ์ ์๋ค. ๊ฐ๋จํ ๋งํด ๋นจ๋ฆฌ ๊ฐ๋ ค๊ณ ์๊ฐ์ ๋ค์ด์ง ์๋๋ค.
๊ทธ๋ฌ๋, ์คํ๋ ค ์๋ง์ง์ฐฝ์ธ ์ํ๋ก ์ธํด ์๋๊ฐ ๊ณง๋ฐ๋ก ๋ฆ์ด์ง๊ณ , ๊ฒฐ๊ตญ ๊ธฐํ์ ๋์น๋ค. ๊ธฐํ์ ๋ง์ถ๋ ์ ์ผํ ๋ฐฉ๋ฒ์, ๊ทธ๋ฌ๋๊น ๋นจ๋ฆฌ ๊ฐ๋ ์ ์ผํ ๋ฐฉ๋ฒ์, ์ธ์ ๋ ์ฝ๋๋ฅผ ์ต๋ํ ๊นจ๋ํ๊ฒ ์ ์งํ๋ ์ต๊ด์ด๋ค.
๊นจ๋ํ ์ฝ๋๋?
๋น์ผ๋ค ์คํธ๋กญ์คํธ๋ฃน - C++ ์ฐฝ์์
๋ ผ๋ฆฌ๊ฐ ๊ฐ๋จํด์ผ ๋ฒ๊ทธ๊ฐ ์จ์ด๋ค์ง ๋ชปํ๋ค. ์์กด์ฑ์ ์ต๋ํ ์ค์ฌ์ผ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค. ์ค๋ฅ๋ ๋ช ๋ฐฑํ ์ ๋ต์ ์๊ฑฐํด ์ฒ ์ ํ ์ฒ๋ฆฌํ๋ค.
๊นจ๋ํ ์ฝ๋๋ ํ ๊ฐ์ง๋ฅผ ์ ๋๋ก ํ๋ค.
๊ทธ๋๋ ๋ถ์น - Object Oriented Analysis and Design With Application ์ ์
๊นจ๋ํ ์ฝ๋๋ ๋จ์ํ๊ณ ์ง์ ์ ์ด๋ค. ๊ฒฐ์ฝ ์ค๊ผ์์ ์๋๋ฅผ ์จ๊ธฐ์ง ์๋๋ค. ์คํ๋ ค ๋ช ์พํ ์ถ์ํ์ ๋จ์ํ ์ ์ด๋ฌธ์ผ๋ก ๊ฐ๋ํ๋ค.
๊ฐ๋ ์ฑ์ ๊ฐ์กฐ
'ํฐ' ๋ฐ์ด๋ธ ํ ๋ง์ค - OTI ์ฐฝ๋ฆฝ์, ์ดํด๋ฆฝ์ค ์ ๋ต์ ๋๋ถ
๊นจ๋ํ ์ฝ๋๋ ์์ฑ์๊ฐ ์๋ ์ฌ๋๋ ์ฝ๊ธฐ ์ฝ๊ณ ๊ณ ์น๊ธฐ ์ฝ๋ค. ๋จ์ ํ ์คํธ ์ผ์ด์ค์ ์ธ์ ํ ์คํธ ์ผ์ด์ค๊ฐ ์กด์ฌํ๋ค. ๊นจ๋ํ ์ฝ๋์๋ ์๋ฏธ์๋ ์ด๋ฆ์ด ๋ถ๋๋ค. ์์กด์ฑ์ ์ต์์ด๋ฉฐ ๊ฐ ์์กด์ฑ์ ๋ช ํํ ์ ์ํ๋ค.
๋ง์ดํด ํ๋์ค - Working Effectively with Legacy Code ์ ์
๊นจ๋ํ ์ฝ๋๋ ์ธ์ ๋ ๋๊ตฐ๊ฐ ์ฃผ์ ๊น๊ฒ ์งฐ๋ค๋ ๋๋์ ์ค๋ค. ๊ณ ์น๋ ค๊ณ ์ดํด๋ด๋ ๋ฑํ ์ ๋ ๊ณณ์ด ์๋ค.
์์ฝํ๋ฉด, ์ฃผ์ -> ์ฝ๋๋ฅผ ์ฃผ์ ๊น๊ฒ ์ง๋ ๋ฐฉ๋ฒ, ๋๊ตฐ๊ฐ ์๊ฐ์ ๋ค์ฌ ๊น๋ํ๊ณ ๋จ์ ํ๊ฒ ์ ๋ฆฌํ ์ฝ๋
๋ก ์ ํ๋ฆฌ์ค
- ๋ชจ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ค.
- ์ค๋ณต์ด ์๋ค.
- ์์คํ ๋ด ๋ชจ๋ ์ค๊ณ ์์ด๋์ด๋ฅผ ํํํ๋ค.
- ํด๋์ค, ๋ฉ์๋, ํจ์ ๋ฑ์ ์ต๋ํ ์ค์ธ๋ค.
์๋ ์ปค๋ํ - ์ํค ์ฐฝ์์, ํผํธ ์ฐฝ์์, ์ฝ๋๋ฅผ ์ฌ๋ํ๋ ํ๋ก๊ทธ๋๋จธ๋ค์ ๋๋ถ
์ฝ๋๋ฅผ ์ฝ์ผ๋ฉด์ ์ง์ํ๋ ๊ธฐ๋ฅ์ ๊ฐ ๋ฃจํด์ด ๊ทธ๋๋ก ์ํํ๋ค๋ฉด ๊นจ๋ํ ์ฝ๋๋ผ ๋ถ๋ฌ๋ ๋๋ค.
๊นจ๋ํ ์ฝ๋๋ ์ฝ์ผ๋ฉด์ ๋๋ ์ผ์ด ์์ด์ผ ํ๋ค๋ ์๋ฏธ -> ์ฝ๋๋ฅผ ๋ ํดํ๋๋ผ ๋จธ๋ฆฌ๋ฅผ ์ฅ์ด์งค ํ์๊ฐ ์์ด์ผ ํ๋ค.
2์ฅ. ์๋ฏธ ์๋ ์ด๋ฆ
1. ์๋๋ฅผ ๋ถ๋ช ํ ๋ฐํ๋ผ
๋ณ์๋ ํจ์ ๊ทธ๋ฆฌ๊ณ ํด๋์ค ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ ๋ชจ๋ ๋ตํด์ผ ํ๋ค.
- ๋ณ์(ํน์ ํจ์๋ ํด๋์ค)์ ์กด์ฌ ์ด์ ๋?
- ์ํ ๊ธฐ๋ฅ์?
- ์ฌ์ฉ ๋ฐฉ๋ฒ์?
๋ง์ฝ ๋ฐ๋ก ์ฃผ์์ด ํ์ํ๋ค๋ฉด ์๋๋ฅผ ๋ถ๋ช ํ ๋๋ฌ๋ด์ง ๋ชปํ๋ค๋ ์๋ฏธ์ด๋ค.
int d; // ๊ฒฝ๊ณผ ์๊ฐ(๋จ์: ๋ ์ง)
์ด๋ฆ d๋ ์๋ฌด ์๋ฏธ๋ ๋๋ฌ๋ด์ง ์๋๋ค. ๊ฒฝ๊ณผ ์๊ฐ์ด๋ ๋ ์ง๋ผ๋ ๋๋์ด ์ ๋ ๋ค.
๋ค์ ์ฝ๋๋ ๋ฌด์์ ํ ๊น?
public List<int[]> getThem(){
List<int[]> list1 = new ArrayList<int[]>();
for(int[] x : thelist)
if(x[0] == 4)
list1.add(x);
return list1;
}
์ด ์ฝ๋๊ฐ ํ๋ ์ผ์ ์ง์ํ๊ธฐ ์ด๋ ต๋ค. ์?๐คฆโ๏ธ
๋ณต์กํ ๋ฌธ์ฅ๋ ์๊ณ , ๊ณต๋ฐฑ๊ณผ ๋ค์ฌ์ฐ๊ธฐ๋ ์ ๋นํ๊ณ , ๋ณ์๋ ์ธ ๊ฐ๋ฟ์ด๊ณ , ํ๋ คํ ํด๋์ค๋ ๋คํ ๋ฉ์๋๋ ์์ต๋๋ค.
๋ฌธ์ ๋ ์ฝ๋์ ๋จ์์ฑ์ด ์๋๋ผ, ์ฝ๋์ ํจ์ถ์ฑ์ด๋ค.
๐ ์ฆ, ์ฝ๋ ๋งฅ๋ฝ์ด ์ฝ๋ ์์ฒด์ ๋ช
์์ ์ผ๋ก ๋๋ฌ๋์ง ์๋๋ค.
- theList์ ๋ฌด์์ด ๋ค์๋๊ฐ?
- theList์์ 0๋ฒ์งธ ๊ฐ์ด ์ด์งธ์ ์ค์ํ๊ฐ?
- ๊ฐ 4๋ ๋ฌด์จ ์๋ฏธ์ธ๊ฐ?
- ํจ์๊ฐ ๋ฐํํ๋ ๋ฆฌ์คํธ list1์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋๊ฐ?
public List<Cell> getFlaggedCells(){
List<Cell> flaggedCells = new ArrayList<int[]>();
for(Cell cell : gameBoard)
if(cell.isFlagged())
flaggedCells.add(cell);
return flaggedCells;
}
์ด๋ ๊ฒ ๋จ์ํ ์ด๋ฆ๋ง ๊ณ ์ณค๋๋ฐ๋ ํจ์๊ฐ ํ๋ ์ผ์ ์ดํดํ๊ธฐ ์ฌ์์ก๋ค.
2. ๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ํผํ๋ผ
์ฝ๋์ ๊ทธ๋ฆ๋ ๋จ์๋ฅผ ๋จ๊ฒจ์๋ ์ ๋๋ค. -> ์ฝ๋ ์๋ฏธ๋ฅผ ํ๋ฆฐ๋ค.
๋๋ฆ๋๋ก ๋๋ฆฌ ์ฐ์ด๋ ์๋ฏธ๊ฐ ์๋ ๋จ์ด๋ฅผ ๋ค๋ฅธ ์๋ฏธ๋ก ์ฌ์ฉํด๋ ์ ๋๋ค.ex) hp, aix, sco๋ฑ
์ฌ๋ฌ ๊ณ์ ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ ๋, ์ค์ List๊ฐ ์๋๋ผ๋ฉด accountList
๋ผ ๋ช
๋ช
ํ์ง ์๋๋ค. ๊ณ์ ์ ๋ด๋ ์ปจํ
์ด๋๊ฐ ์ค์ List๊ฐ ์๋๋ผ๋ฉด ํ๋ก๊ทธ๋๋จธ์๊ฒ ๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์
์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก accountGroup
, bunchOfAccount
,Accounts
๋ผ ๋ช
๋ช
ํ๋ค.
์๋ก ํก์ฌํ ์ด๋ฆ์ ์ฌ์ฉํ์ง ์๋๋ก ์ฃผ์ํ๋ค.
ํ ๋ชจ๋์์ XYZControllerForEfficientHandlingOfStrings
๋ผ๋ ์ด๋ฆ๊ณผ XYZControllerForEfficientStorageOfStrings
๋ผ๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ค๋ฉด ํท๊ฐ๋ฆด ๊ฒ์ด๋ค.
์ ์ฌํ ๊ฐ๋
์ ์ ์ฌํ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค. ์ด๊ฒ๋ ์ ๋ณด๋ค. ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ ํ๊ธฐ๋ฒ์ ๊ทธ๋ฆ๋ ์ ๋ณด๋ค.
3. ์๋ฏธ ์๊ฒ ๊ตฌ๋ถ
์ปดํ์ผ๋ฌ๋ ์ธํฐํ๋ฆฌํฐ๋ง ํต๊ณผํ๋ ค๋ ์๊ฐ์ผ๋ก ์ฝ๋๋ฅผ ๊ตฌํํ๋ ํ๋ก๊ทธ๋๋จธ๋ ์ค์ค๋ก ๋ฌธ์ ๋ฅผ ์ผ์ผํจ๋ค.
์๋ฅผ ๋ค์ด, ๋์ผํ ๋ฒ์ ์์์ ๋ค๋ฅธ ๋ ๊ฐ๋
์ ๊ฐ์ ์ด๋ฆ์ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
์ปดํ์ผ๋ฌ๋ฅผ ํต๊ณผํ ์ง๋ผ๋ ์ฐ์๋ ์ซ์๋ฅผ ๋ง๋ถ์ด๊ฑฐ๋ ๋ถ์ฉ์ด ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ ์ ์ ํ์ง ๋ชปํ๋ค. ์ด๋ฆ์ด ๋ฌ๋ผ์ผ ํ๋ค๋ฉด ์๋ฏธ๋ ๋ฌ๋ผ์ ธ์ผ ํ๋ค.
์ฐ์์ ์ธ ์ซ์๋ฅผ ๋ง๋ถ์ธ ์ด๋ฆ(a1, a2, ..., aN)์ ์๋์ ์ธ ์ด๋ฆ์ ์ ๋ฐ๋๋ค.
public static void copyChars(char a1[], char a2[]){
for(int i = 0; i < a1.length(); i++){
a2[i] = a1[i];
}
}
์ ์ฝ๋์์ ํจ์ ์ธ์ ์ด๋ฆ์ผ๋ก a1 -> source, a2 -> destination์ ์ฌ์ฉํ๋ค๋ฉด ์ฝ๋ ์ฝ๊ธฐ ๊ฐ ํจ์ฌ ๋ ์ฌ์์ง๋ค.
๋ถ์ฉ์ด๋ฅผ ์ถ๊ฐํํ ์ด๋ฆ ์ญ์ ์๋ฌด๋ฐ ์ ๋ณด๋ ์ ๊ณตํ์ง ๋ชปํ๋ค. Product๋ผ๋ ํด๋์ค๊ฐ ์์ ๋, ๋ค๋ฅธ ํด๋์ค๋ฅผ ProductInfo ํน์ ProductData ๋ผ ๋ถ๋ฅธ๋ค๋ฉด ๊ฐ๋
์ ๊ตฌ๋ถํ์ง ์์ ์ฑ ์ด๋ฆ๋ง ๋ฌ๋ฆฌํ ๊ฒฝ์ฐ๋ค.์ฝ์ ์ฌ๋์ด ์ฐจ์ด๋ฅผ ์๋๋ก ์ด๋ฆ์ ์ง์ด์ผ ํ๋ค.
4. ๋ฐ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ
class DtaRcrd102 {
private Date genymdhms;
private Date modymdhms;
private final String pszqint = "102";
/*...*/
}
class Customer {
private Date generationTimestamp;
private Date modificationTimestamp;
private final String pszqint = "102";
/*...*/
}
์๋ ์ฝ๋๋ ์ง์ ์ธ ๋ํ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
5. ๊ฒ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ
๋ฌธ์ ํ๋๋ฅผ ์ฌ์ฉํ๋ ์ด๋ฆ๊ณผ ์์๋ ํ
์คํธ ์ฝ๋์์ ์ฝ๊ฒ ๋์ ๋์ง ์๋๋ค๋ ๋ฌธ์ ์ ์ด ์๋ค. ๋ง์ฝ e๋ผ๋ ๋ณ์๊ฐ ์๊ณ , ์ด๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ฒ์ํ๋ค๋ฉด e๊ฐ ํฌํจ๋ ํ์ผ ์ด๋ฆ์ด๋ ์ฝ๋๊ฐ ๊ฒ์๋์ด์ ์ํ๋ ๊ฒ์ ์ฐพ๊ธฐ๊ฐ ์ด๋ ต๋ค. ๊ทธ๋ฌ๋ MAX_CLASSES_PER_STUDENT๋ผ๊ณ ์ด๋ฆ์ ๋ช
์ํ๋ค๋ฉด ํจ์ฌ ์ฐพ๊ธฐ๊ฐ ์ฝ๋ค.
์ด๋ฆ์ ์๋ฏธ์๊ฒ ์ง์ผ๋ฉด ํจ์๊ฐ ๊ธธ์ด์ง์ง๋ง, ์ฐพ๊ธฐ๊ฐ ์ฌ์์ง๋ค.
6. ์ธ์ฝ๋ฉ์ ํผํ๋ผ
์ ํ์ด๋ ๋ฒ์ ์ ๋ณด๊น์ง ์ธ์ฝ๋ฉ์ ๋ฃ์ผ๋ฉด ๊ทธ๋งํผ ์ด๋ฆ์ ํด๋
ํ๊ธฐ ์ด๋ ค์์ง๋ค. ์์๋ก ๋ฉค๋ฒ ๋ณ์์ m_
์ด๋ผ๋ ์ ๋์ด๋ฅผ ๋ถ์ด๋ ๊ท์น์ด ์์๋ค.
์ธํฐํ์ด์ค ํด๋์ค์ ๊ตฌํ ํด๋์ค๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ธ์ฝ๋ฉ์ด ํ์ํ ๊ฒฝ์ฐ๋ ์๋ค. ๋๋ก์๋ ๋ด๊ฐ ๋ค๋ฅด๋ ํด๋์ค๊ฐ ์ธํฐํ์ด์ค๋ผ๋ ์ฌ์ค์ ๋จ์๊ฒ ์๋ฆฌ๊ณ ์ถ์ง ์๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค ํด๋์ค์ ๊ตฌํ ํด๋์ค ์ค ํ๋๋ฅผ ์ธ์ฝ๋ฉํด์ผ ํ๋ค๋ฉด ๊ตฌํ ํด๋์ค ์ด๋ฆ์ ์ ํํ๋ค. ShapeFactoryImp
๋ CShapeFactory
๊ฐ IShapeFactory
๋ณด๋ค ์ข๋ค.
7. ํด๋์ค/๋ฉ์๋ ์ด๋ฆ
ํด๋์ค ์ด๋ฆ๊ณผ ๊ฐ์ฒด ์ด๋ฆ์ ๋ช
์ฌ๋ ๋ช
์ฌ๊ตฌ๊ฐ ์ ํฉํ๋ค. Customer
, WikiPage
, Account
, AddressParser
๋ฑ์ด ์ข์ ์๋ค.Manager
, Processor
, Data
, Info
๋ฑ๊ณผ ๊ฐ์ ๋จ์ด๋ ํผํ๊ณ , ๋์ฌ๋ ์ฌ์ฉํ์ง ์๋๋ค.
๋ฉ์๋ ์ด๋ฆ์ ๋์ฌ๋ ๋์ฌ๊ตฌ๊ฐ ์ ํฉํ๋ค. postPayment
, deletePage
, save
๋ฑ์ด ์ข์ ์๋ค.
์ ใ
๊ทผ์, ๋ณ๊ฒฝ์, ์กฐ๊ฑด์๋ javabean ํ์ค์ ๋ฐ๋ผ ๊ฐ ์์ get, set, is๋ฅผ ๋ถ์ธ๋ค.
8. ํ ๊ฐ๋ ์ ํ ๋จ์ด๋ฅผ ์ฌ์ฉ
์ถ์์ ์ธ ๊ฐ๋
ํ๋์ ๋จ์ด ํ๋๋ฅผ ์ ํํด ์ด๋ฅผ ๊ณ ์ํ๋ค. ์๋ฅผ ๋ค์ด, ๋๊ฐ์ ๋ฉ์๋๋ฅผ ํด๋์ค๋ง๋ค fetch
, retrieve
, get
์ผ๋ก ์ ๊ฐ๊ฐ ๋ถ๋ฅด๋ฉด ํผ๋์ค๋ฝ๋ค. ์ด๋ ํด๋์ค์์ ์ด๋ ์ด๋ฆ์ ์ผ๋์ง ๊ธฐ์ตํ๊ธฐ ์ด๋ ต๋ค.
ํ์ง๋ง ๋๋ก๋ ๊ฐ์ ๋งฅ๋ฝ์ด ์๋๋ฐ๋ ์ผ๊ด์ฑ
์ ๊ณ ๋ คํด add๋ผ๋ ๋จ์ด๋ฅผ ์ ํํ๋ค. ์ง๊ธ๊น์ง ๊ตฌํํ add ๋ฉ์๋๋ ๋ชจ๋๊ฐ ๊ธฐ์กด ๊ฐ ๋ ๊ฐ๋ฅผ ๋ํ๊ฑฐ๋ ์ด์ด์ ์๋ก์ด ๊ฐ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ์. ์๋ก ์์ฑํ๋ ๋ฉ์๋๋ ์งํฉ์ ๊ฐ ํ๋๋ฅผ ์ถ๊ฐํ๋ค.
์ด ๋ฉ์๋๋ฅผ add๋ผ ๋ถ๋ฌ๋ ๊ด์ฐฎ์๊น? -> ๊ธฐ์กด์ add ๋ฉ์๋์ ๋งฅ๋ฝ์ด ๋ค๋ฅด๋ค. ๊ทธ๋ฌ๋ฏ๋ก insert๋ append๋ผ๋ ์ด๋ฆ์ด ์ ๋นํ๋ค.
9. ์๋ฏธ ์๋ ๋งฅ๋ฝ์ ์ถ๊ฐ
์๋ฅผ ๋ค์ด, firstName
, lastName
, street
, houseNumber
, city
, state
, zipcode
๋ผ๋ ๋ณ์๋ค์ ๋ณด๋ฉด ์ฃผ์๋ผ๋ ์ฌ์ค์ ๊ธ๋ฐฉ ์์์ฑ ์ ์๋ค. ํ์ง๋ง ์ด๋ค ๋ฉ์๋๊ฐ state
๋ผ๋ ๋ณ์ ํ๋๋ง ์ฌ์ฉํ๋ค๋ฉด? ์ฃผ์์ ์ผ๋ถ๋ผ๋ ์ฌ์ค์ ๊ธ๋ฐฉ ์์์ฑ๊น?
์ด๋ด ๋๋ addr
์ด๋ผ๋ ์ ๋์ฌ๋ฅผ ์ถ๊ฐํด ์ฌ์ฉํ๋ฉด ๋งฅ๋ฝ์ด ์ข ๋ ๋ถ๋ช
ํด์ง๋ค.
'๐โโ๏ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
API๋? (0) | 2023.11.01 |
---|