π Chapter 1: Birth
- κ°μ²΄λ μμ μ κ°μμ± λ²μ(scope of visibility) μμμ μ΄μκ°λ€.
if (price < 100) {
Cash extra = new Cash(5);
price.add(extra);
}
- μμ μμ
if
λΈλ‘ μμμλ§extra
λΌλ κ°μ²΄λ₯Ό λ³Ό μ μκΈ° λλ¬Έμ,if
λΈλ‘ λ΄λΆκ°extra
κ°μ²΄μ κ°μμ± λ²μκ° λλ€. μμ μμ μ«μ 5λ κ°μ²΄ λ΄λΆμ λ¨μμκ³ ,price
λ κ°μ²΄μ μΈλΆμ μ‘΄μ¬νλ€. - κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μμ κ°μ²΄μ κ°μ²΄μ μν μ μ΄ν΄ν¨μΌλ‘μ¨ μ½λμ μ μ§λ³΄μμ±μ ν₯μμν¬ μ μλ€. μ½λμ κΈΈμ΄λ λ 짧μμ§κ³ , μννκΈ° μ¬μμ§λ©°, λͺ¨λμ±μ΄ ν₯μλκ³ , μμ§λκ° λμμ§λ€.
π¦ -erλ‘ λλλ μ΄λ¦μ μ¬μ©νμ§ λ§μΈμβ
- ν΄λμ€λ κ°μ²΄μ ν©ν 리μ΄λ€.
- ν΄λμ€λ κ°μ²΄λ₯Ό μμ±νκ³ ν΄λμ€κ° κ°μ²΄λ₯Ό μΈμ€ν΄μ€ννλ€λΌκ³ νννλ€.
class Cash {
public Cash(int dollars) {
// ...
}
}
Cash five = new Cash(5);
new
λ κ°μ²΄μ ν©ν 리λ₯Ό μ μ΄ν μ μλ μμμ μΈ μλ¨μ΄λ€.new
λCash
ν΄λμ€μ μ μ λ©μλμ΄λ©°,new
κ° νΈμΆλλ©΄Cash
ν΄λμ€κ° μ μ΄λ₯Ό νλν νfive
κ°μ²΄λ₯Ό μμ±νλ€.new
μ°μ°μκ° μ€νλκΈ° μ μ λΆκ°μ μΈ λ‘μ§μ λν μ μκΈ° λλ¬Έμ,new
μ°μ°μλ₯Ό λ³΄λ€ μ μ°νκ² μ¬μ©ν μ μλ€.
class Shapes {
public Shape make(String name) {
if (name.equals("circle")) {
return new Circle();
}
if (name.equals("rectangle")) {
return new Rectangle();
}
throw new IllegalArgumentException("not found");
}
}
- ν΄λμ€λ₯Ό νμν λ κ°μ²΄λ₯Ό κΊΌλΌ μ μκ³ , λ μ΄μ νμνμ§ μμ κ°μ²΄λ₯Ό λ°νν μ μλ κ°μ²΄μ μ¨μ΄νμ°μ€λ‘ 보λ κ²μ΄ μ’λ€.
- ν΄λμ€λ κ°μ²΄μ ν νλ¦Ώμ΄ μλλ€ ν©ν 리μ΄λ€. (ν΄λμ€λ κ°μ²΄μ λ₯λμ μΈ κ΄λ¦¬μλΌκ³ μκ°ν΄μΌ νλ€.)
- μλμ μμ λ κ°μ²΄λ₯Ό μ΄λ¦μ μ§λλ° μλͺ»λ λ°©λ²μΌλ‘ ν΄λμ€μ κ°μ²΄λ€μ΄ 무μμ νκ³ μλμ§λ₯Ό μ΄ν΄λ³Έ ν κΈ°λ₯μ κΈ°λ°ν΄μ μ΄λ¦μ μ§λ λ°©λ²μ΄λ€.
class CashFormatter {
private int dollars;
CashFormatter(int dlr) {
this.dollars = dlr;
}
public String format() {
return String.format("$ %d", this.dollars);
}
}
- μμ κ°μ΄ ν΄λμ€μ μ΄λ¦μ κ°μ²΄κ° λ ΈμΆνκ³ μλ κΈ°λ₯μ κΈ°λ°ν΄μλ μλλ€.
- ν΄λμ€μ μ΄λ¦μ 무μμ νλμ§κ° μλλΌ λ¬΄μμΈμ§μ κΈ°λ°ν΄μΌ νλ€.
class Cash {
private int dollars;
Cash(int dlr) {
this.dollars = dlr;
}
public String usd() {
return String.format("$ %d", this.dollars);
}
}
- λ€μ λ§ν΄μ, κ°μ²΄λ κ·Έμ μλ(capability)μΌλ‘ νΉμ μ§μ΄μ ΈμΌ νλ€.
- μ¬κΈ°μ λ§νλ κ²μ²λΌ λ°λ‘ μ λ―Έμ¬ -erμ μ¬μ©νλ©΄ μλλ€. (Manager, Controller, Helper, Handler, Writer, Validator, Router etc..)
- μμΈμΈ κ·μΉλ μ‘΄μ¬νλλ° μ€λ μκ°μ΄ νλ₯΄λ©΄μ μλ―Έκ° μ μ°©λ κ²½μ°μ΄λ€. λνμ μΈ μκ° computer, userμ΄λ€.
- κ° μ²΄λ κ°μ²΄μ μΈλΆ μΈκ³μ λ΄λΆ μΈκ³λ₯Ό μ΄μ΄μ£Όλ μ°κ²°μ₯μΉκ° μλλΌ κ°μ²΄λ μΊ‘μνλ λ°μ΄ν°μ λνμμ΄λ€. μ¦, λνμλ μ€μ€λ‘ κ²°μ μ λ΄λ¦¬κ³ νλν μ μλ μ립μ μΈ μν°ν°μ΄λ€.
- λλ¬Έμ ν΄λμ€μ μ΄λ¦μ΄ -erλ‘ λλλ€λ©΄, μ΄ ν΄λμ€μ μΈμ€ν΄μ€λ μ€μ λ‘λ κ°μ²΄κ° μλλΌ μ΄λ€ λ°μ΄ν°λ₯Ό λ€λ£¨λ μ μ°¨λ€μ μ§ν©μΌ λΏμ΄λ€.
- μ¬λ°λ₯Έ ν΄λμ€λ₯Ό μ΄λ¦μ ν΄λμ€μ κ°μ²΄λ€μ΄ 무μμ μΊ‘μνν κ²μΈμ§λ₯Ό κ΄μ°°νκ³ μ΄ μμλ€μ λΆμΌ μ ν©ν μ΄λ¦μ μ°ΎμμΌ νλ€.
class PrimeNumbers
def initialize(origin)
@origin = origin
end
def each
@origin
.select{ |i| prime? i }
.each{ |i| yield i }
end
def prime?(x)
# ...
end
end
PrimeNumbers
ν΄λμ€λ μ«μλ€μ 리μ€νΈμ²λΌ νλνμ§λ§ μ€μ§ μμλ§ λ°ννλ€.- μ΄μ²λΌ μ«μ 리μ€νΈλ₯Ό μΊ‘μννκ³ μλ λμμλ, μΈλΆμμ μ§μ κ°μ²΄ λ΄λΆμ ν¬ν¨λ μ«μ 리μ€νΈλ₯Ό μ²λ¦¬νκ±°λ μ‘°ννλλ‘ νμ©ν΄μλ μλλ€.
PrimeNumbers
λ μ«μμ 리μ€νΈμ΄λ€.(is a) 리μ€νΈ κ·Έ μ체μ΄λ€.
π¦ μμ±μ νλλ₯Ό μ£Ό μμ±μλ‘ λ§λμΈμβ
constructor
λ μλ‘μ΄ κ°μ²΄μ λν μ§μ μ μΌλ‘ λͺ κ°μ μΈμλ€μ μ λ¬λ°μ, μ΄λ€ μΌμ μνν ν, μ무λ₯Ό μνν μ μλλ‘ κ°μ²΄λ₯Ό μ€λΉμν¨λ€.
class Cash {
private int dollar;
Cash(int dlr) {
this.dollars = dlr;
}
}
- μμ λ νλμ
constructor
κ° μ‘΄μ¬νκ³ μννλ νλμ μμ μ μΈμλ‘ μ λ¬λ λ¬λ¬λ₯Όdollars
λΌλ μ΄λ¦μprivate
μ μ νλ‘νΌν°μ μΊ‘μννλ κ²μ΄λ€. - μ΄λ 2 ~ 3κ°μ λ©μλμ 5 ~ 10κ°μ
constructor
λ₯Ό ν¬ν¨νλ κ²μ΄ μ λΉνλ€. constructor
μ κ°μκ° λ§μμ§ μλ‘ λ κ°μ λκ³ , μ¬μ©μ μ μ₯μμ ν΄λμ€λ₯Ό λ νΈνκ² μ¬μ©ν μ μλ€. νμ§λ§ λ©μλκ° λ§μμ§μλ‘ ν΄λμ€λ₯Ό μ¬μ©νκΈ°λ λ μ΄λ €μμ§λ€. λ©μλκ° λ§μμ§λ©΄ ν΄λμ€μ μ΄μ μ΄ νλ €μ§κ³ , λ¨μΌ μ± μ μμΉμ μλ°νλ€.constructor
μ μ£Όλ μμ μ μ 곡λ μΈμλ₯Ό μ¬μ©ν΄μ μΊ‘μννκ³ μλ νλ‘νΌν°λ₯Ό μ΄κΈ°ννλ μΌμ΄λ€. μ΄λ° μ΄κΈ°ν λ‘μ§μ λ¨ νλμconstructor
μλ§ μμΉμν€κ³ μ£Όconstructor
λΌκ³ λΆλ₯΄κΈ°λ₯Ό κΆμ₯νκ³ μλμ μμ μ²λΌ λΆconstructor
λΌκ³ λΆλ₯΄λ λ€λ₯Έconstructor
λ€μ΄ μ΄ μ£Όconstructor
λ₯Ό νΈμΆνλλ‘ λ§λ€μ΄μΌ νλ€.
class Cash {
private int dollars;
Cash(float dlr) { // λΆ
this((int) dlr);
}
Cash(String dlr) { // λΆ
this(Cash.parse(dlr));
}
Cash(int dlr) { // μ£Ό constructor
this.dollars = dlr;
}
}
- μ μ§λ³΄μμ±μ μν΄ μ£Ό
constructor
λ₯Ό λͺ¨λ λΆconstructor
λ€μ μμΉμν¨λ€. - νλμ μ£Ό
constructor
μ λ€μμ λΆconstructor
μμΉμ ν΅μ¬μ μ€λ³΅ μ½λλ₯Ό λ°©μ§νκ³ μ€κ³λ₯Ό λ κ°κ²°νκ² λ§λ€κΈ° λλ¬Έμ μ μ§λ³΄μμ±μ΄ ν₯μλλ€λ κ²μ΄λ€. - λ΄λΆμ νλ‘νΌν°λ μ€μ§ ν κ³³μμλ§ μ΄κΈ°νν΄μΌ νλ€λ ν΅μ¬ μμΉμ΄λ€.