Bibi's DevLog ๐ค๐
[TIL] TreeMap, Properties, ์๋ฐ ์๋ฃ๊ตฌ์กฐ / ๊ฐ์ฒด, ํด๋์ค, ์ธ์คํด์ค, ๋ณ์, ๋ฉ์๋, ํ๋, ํ๋กํผํฐ, ์์, this, super ๋ณธ๋ฌธ
[TIL] TreeMap, Properties, ์๋ฐ ์๋ฃ๊ตฌ์กฐ / ๊ฐ์ฒด, ํด๋์ค, ์ธ์คํด์ค, ๋ณ์, ๋ฉ์๋, ํ๋, ํ๋กํผํฐ, ์์, this, super
๋น๋น bibi 2021. 1. 17. 00:00[210116]
์ค๋์ ์์ตํ๋ ๋ . ๊ธฐ๋ณธ์ ์ง๋๋ฅผ ์กฐ๊ธ ๋๊ฐ๊ณ , ์ด์ ์ JK์์ ์ ๋ณต์ตํ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํ๊ธฐ๋ก ํ๋ค.
-> ๊ธฐ๋ณธ์ ๊ณต๋ถ + ๊ฐ๋ ์ ๋ฆฌ๋ฅผ ํ๋ค ๋ณด๋ ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ๊น์ง ๊ณต๋ถํ ์๊ฐ์ด ๋ถ์กฑํ๋คใ ๋ค์์ ์ด์ด์ ๊ณต๋ถํด์ผ๊ฒ ๋ค.
๊ทธ๋๋ ํท๊ฐ๋ฆฌ๋ ๊ฐ๋ ์ ํ ๋ฒ์ ์ ๋ฆฌํ๊ณ ๋ณด๋ ์์ด ์์ํด์ ์ข๋ค. ๋์ค์ ๋ ํท๊ฐ๋ฆฌ๋ฉด ์ฌ๊ธฐ๋ก ์์ผ์ง.
TIL
์๋ฐ ๊ธฐ๋ณธ์ ์ง๋(์ด์ด์)
TreeMap
- Map์ ์ฌ์ฉํ๋ฉด์๋ Key๋ฅผ ์ ๋ ฌํ๊ณ ์ถ์ ๋ ์ฌ์ฉ.
- (String ๊ธฐ์ค) ์ซ์-์ํ๋ฒณ๋๋ฌธ์-์ํ๋ฒณ์๋ฌธ์-ํ๊ธ ์์ผ๋ก ์ ๋ ฌ๋๋ค.
- ๋ช๋ง ๊ฑด ์ด์์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ์๋ HashMap์ด ๋ ๋น ๋ฅด๋ค.
- SortedMap์ด๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ํค๊ฐ ์ ๋ ฌ๋๋ค.
(SortedMap์ ๊ตฌํํ ํด๋์ค๋ ๋ชจ๋ ํค๊ฐ ์ ๋ ฌ๋์ด ์์ด์ผ ํจ)- ํค๋ฅผ ๊ฒ์ํ ์ ์๋
firstKey()
,lastKey()
,higherKey()
,lowerKey()
๋ฑ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
- ํค๋ฅผ ๊ฒ์ํ ์ ์๋
Properties ํด๋์ค
- ์๋ฐ์์ ์์คํ ์ ์์ฑ์ ์ ๊ณตํ๋ ํด๋์ค
- Hashtable์ extendsํจ.
- ํ์ผIO์ ์ฐ๊ด์ด ๊น๋ค - ํ์ผIO ๊ด๋ จ ๋ฉ์๋๋ค์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ.
load()
,loadFromXML()
,store()
,storeToXML()
XML : eXtensive Markup Language ์ ์ฝ์๋ก, ํ๊ทธ
<>
๋ก ๊ตฌ์ฑ๋ ํ ์คํธ๋ฌธ์๋ฅผ ์๋ฏธํจ.
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋์ ํ์ค ํํ ์ค ํ๋์ด๋ค. (์์ฆ์ json์ ์ฃผ๋ก ์ฌ์ฉ)
์๋ฐ์ ์๋ฃ๊ตฌ์กฐ ๊ฐ๋จ ์ ๋ฆฌ
- Collection
- Set
: ์์๊ฐ ์๋ ๋ชฉ๋ก์ด๋ฉด์ ๋ฐ์ดํฐ์ ์ค๋ณต๋๋ฉด ์ ๋ ๋ ์ ๋ฆฌ- HashSet, TreeSet, LinkedHashSet
- List
: ์์๊ฐ ์๋ ๋ชฉ๋ก ์ฒ๋ฆฌ์ ์ ๋ฆฌ- ArrayList, LinkedList
- Queue
: ๋ฐ์ดํฐ๊ฐ ๋ค์ด์จ ์์๋๋ก ์ฒ๋ฆฌํด์ผ ํ ๋ ์ ๋ฆฌ (FIFO, ์ ์ ์ ์ถ)- LinkedList, PriorityQueue
- Set
- Map
- HashMap, TreeMap, LinkedHashMap
์์ต
TCPschool, ์ ํ ํฌ ์๋ฐ๋ฅผ ์ฃผ๋ก ์ฐธ๊ณ ํด ์ ๋ฆฌํ์ต๋๋ค. ๐โโ๏ธ
๊ฐ์ฒด object
- ๊ฐ์ฒด๋ ๋์, ์ฌ๋ฌผ์ ๋ปํ๋ค.
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ OOP, Object-Oriented Programming
: ๊ฐ์ฒด์ ์ํ state์ ํ๋ behavior ์ ๊ตฌ์ฒดํํ๋ ๋ฐฉ์์ ํ๋ก๊ทธ๋๋ฐ.
ํด๋์ค class
- ์๋ฐ์์ ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ "์ค๊ณ๋"์ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉ๋๋ค.
- ์ค๊ณ๋๋ฅผ ๊ฐ์ง๊ณ ์ ํ์ ๋ง๋ค๋ฏ, ํด๋์ค๋ฅผ ๊ฐ์ง๊ณ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ ์ ์๋ค.
- ํด๋์ค๋..
- ๊ฐ์ฒด์ ์ํ state๋ฅผ ๋ํ๋ด๋ ํ๋ field์,
ํ๋ field : ํด๋์ค์ ํฌํจ๋ *๋ณ์ variable๋ฅผ ์๋ฏธํจ. ( = **์ธ์คํด์ค ๋ณ์, ๋ฉค๋ฒ๋ณ์) - ๊ฐ์ฒด์ ํ๋ behavior์ ๋ํ๋ด๋ ๋ฉ์๋ method๋ก ๊ตฌ์ฑ๋๋ค.
*๋ฉ์๋ method : ๋ช ๋ น๋ฌธ์ ์งํฉ.
- ๊ฐ์ฒด์ ์ํ state๋ฅผ ๋ํ๋ด๋ ํ๋ field์,
์ธ์คํด์ค instance
- ์ธ์คํด์คํ instantiate
: ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์ ์ธํ๋ ๊ฒ (=ํด๋์ค๋ผ๋ ์ค๊ณ๋๋ฅผ ํตํด ์ด๋ค ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒ) - ์๋ฐ์์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋, ํด๋น ํด๋์ค ํ์ ์ ๊ฐ์ฒดObject๋ฅผ ์ ์ธํด์ผ ํจ.
- ์ธ์คํด์ค instance
: ํด๋์ค๋ฅผ ํตํด ๋ง๋ค์ด์ง, ํด๋น ํด๋์ค ํ์ ์ ๊ฐ์ฒด.
: ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํจ. - ํ๋์ ํด๋์ค๋ก๋ถํฐ ์ฌ๋ฌ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์์.
- ์์ฑ๋ ์ธ์คํด์ค๋ ๊ฐ๊ฐ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ ์์ ๋ง์ ํ๋๋ฅผ ๊ฐ์ง.
class Car { // ํด๋์ค - ์ค๊ณ๋.
public static void main(String[] args) {
Car myCar = new Car(); // ํด๋์ค์ ๊ฐ์ฒด ์์ฑ - Carํด๋์ค์ ์ธ์คํด์ค myCar
String myCar.model = "Mini"; // myCar์ธ์คํด์ค์ ํ๋ - model๊ณผ color.
String myCar.color = "black";
int myCar.speed = 0;
}
public void accelerate() { // Carํด๋์ค์ ๋ฉ์๋
}
}
์ธ์คํด์ค Instance ์ ๊ฐ์ฒด Object์ ์ฐจ์ด?
- ํด๋์ค์ ์ํด์ ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค๋ผ๊ณ ๋ ํ๋ค.
- ์ฃผ๋ก ์ธ์คํด์ค๋ ํน์ ๊ฐ์ฒด๊ฐ ์ด๋ค ํด๋์ค์ ๊ฐ์ฒด์ธ์ง๋ฅผ ๊ด๊ณ์์ฃผ๋ก ์ค๋ช ํ ๋ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค์ด,
Animal cat = new Animal()
์ผ ๋cat
์ด๋ผ๋ ๊ฐ์ฒด๋,Animal
ํด๋์ค์ ์ธ์คํด์ค์ด๋ค.
cat
์ ์ธ์คํด์ค์ด๋ค. (X)cat
์ ๊ฐ์ฒด์ด๋ค. (O)cat
์Animal
์ ๊ฐ์ฒด์ด๋ค. (X)cat
์Animal
์ ์ธ์คํด์ค์ด๋ค. (O)
๋ฉ์๋ method
- ํด๋์ค ๋ด๋ถ์ ๊ตฌํ๋ ํจ์๋ฅผ ์๋ฏธํจ.
- ํน์ ์์ ์ ์ํํ๊ธฐ ์ํ ๋ช ๋ น๋ฌธ์ ์งํฉ.
- ์๋ฐ์์ ํด๋์ค์ ๋ฉค๋ฒ๋ก,
- ์์ฑ์ ๋ํ๋ด๋ ํ๋field์
- ๊ธฐ๋ฅ์ ๋ํ๋ด๋ ๋ฉ์๋method ๋ฅผ ๊ฐ์ง๋ค.
ํ๋กํผํฐproperty
- ํ๋กํผํฐ (์ถ์ฒ ์ํค๋ฐฑ๊ณผ)
: ์ผ๋ถ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํ๋(๋ฐ์ดํฐ ๋ฉค๋ฒ)์ ๋ฉ์๋ ๊ฐ ๊ธฐ๋ฅ์ ์ค๊ฐ์ธ ํด๋์ค ๋ฉค๋ฒ์ ํน์ํ ์ ํ. ํ๋กํผํฐ์ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ ์ผ๋ฐ์ ์ผ๋ก getter/setter๋ฉ์๋ ํธ์ถ๋ก ๋ณํ๋๋ค.
์๋ฐ์ ๊ฐ์ ์ผ๋ถ ๊ฐ์ฒด์งํฅ์ธ์ด๋ค์ ํ๋กํผํฐ๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์, ํ๋ก๊ทธ๋๋จธ๊ฐ ํ ์์ accessor(์ ๊ทผ์)์ mutator(๋ณ๊ฒฝ์)๋ฉ์๋๋ฅผ ๋์ ์ ์ํด์ผ ํ๋ค. - property : ํด๋์ค์ ์ ์๋ ๋ฐ์ดํฐ ์์. ์ฆ, ํด๋์ค ๋ด๋ถ์ ๋ง๋๋ ๋ณ์.
๋ณ์์ ํ๋กํผํฐ์ ์ฐจ์ด?
(์๋ฐ์ ๋ํ ๋ด์ฉ์ ์๋ ๊ฒ ๊ฐ์ผ๋, ๊ฐ๋ ์ ์ผ๋ก ์ค๋ช ๋์ด ์์ด์ ์ผ๋จ ์ ๋ฆฌํด ๋ณธ๋ค)
- ๋ณ์ variable
- ๋ณ์์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ๋์๋จ.
- ๋ณ์๋ ๋จ์ผ ์ ์ธ๋ฌธ์ผ๋ก ์ ์๋จ.
- ํ๋กํผํฐ property
- ํ๋กํผํฐ๋ ํด๋์ค/๋ชจ๋์ ์ ์๋ ๋ฐ์ดํฐ ์์.
- ์๋ฐ์์๋ ์ฃผ๋ก getter / setter๋ฅผ ํตํด ํ๋กํผํฐ์ ์ ๊ทผํจ
์์ inheritance
- ์์์ด๋ '๊ธฐ์กด์ ํด๋์ค์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ์ฌ์ ์ํ์ฌ ์๋ก์ด ํด๋์ค๋ฅผ ์ ์ํ๋ ๊ฒ'
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ์ ๊ตฌ์ฑํ๋ ์ค์ํ ํน์ง ์ค ํ๋์ด๋ค.
- ์์์ ํด ์ฃผ๋ ํด๋์ค๋ฅผ
๋ถ๋ชจ ํด๋์คparent class / ์์ ํด๋์คsuper class / ๊ธฐ์ด ํด๋์ค base class ๋ผ๊ณ ํ๋ค. - ์์์ ๋ฐ๋ ํด๋์ค๋ฅผ
์์ ํด๋์คchild class / ํ์ ํด๋์คsub class / ํ์ ํด๋์ค derived class ๋ผ๊ณ ํ๋ค.
- ์์ํ๊ธฐ
- ์๋ฐ์์๋
extends
๋ผ๋ ์์ฝ์ด๋ฅผ ํตํด ์์๋ฐ์ ์ ์๋ค.
ํด๋์ค ์ ์ธ๋ถ์์class ์์ํด๋์ค๋ช extends ๋ถ๋ชจํด๋์ค๋ช
์ ๊ฐ์ ํ์์ผ๋ก ์ ์ธํ๋ค.
- ์๋ฐ์์๋
- ์์์ ์ฅ์
- ๋ถ๋ชจํด๋์ค์ ์ ์ธ๋ ๋ชจ๋
public
,protected
๋ณ์, ๋ฉ์๋๋ฅผ ์์ํด๋์ค๊ฐ ์์ ์ ํด๋์ค์ ์ ์ธํ ๊ฒ๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.- ๋ถ๋ชจํด๋์ค์
private
,default
๋ณ์๋ ์์์ ๋ฐ์ง๋ง ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํด ์ฌ์ฉํ ์ ์๋ค.
- ๋ถ๋ชจํด๋์ค์
- ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค.
- ํด๋์ค ๊ฐ ๊ณ์ธต์ ๊ด๊ณ๋ฅผ ํ์ฑํ ์ ์๋ค.
- ๋ถ๋ชจํด๋์ค์ ์ ์ธ๋ ๋ชจ๋
- IS-A ๊ด๊ณ
- ์์๊ด๊ณ๋ฅผ ๋งํ๋ ๋ ๋ค๋ฅธ ํํ์ด๋ค.
- ์๋ฅผ ๋ค์ด
class Dog extends Animal {}
๋กDog
ํด๋์ค๊ฐAnimal
ํด๋์ค๋ฅผ ์์๋ฐ์์ ๋,Dog
๋Animal
์ ํฌํจ๋๋ ๊ด๊ณ์ด๋ค. - ๋ฐ๋ผ์
Dog
is a
Animal
์ด๋ผ๋ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝํ๋ค. -> is a ๊ด๊ณ.
- ์๋ฅผ ๋ค์ด
- is-a๊ด๊ณ์ผ ๋ ์์ํด๋์ค ๊ฐ์ฒด๋ ๋ถ๋ชจํด๋์ค์ ์๋ฃํ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
Animal dog = new Dog();
๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค. - ์ ์บ์คํ Upcasting- ์ฐ๋ณ ํด๋์ค
is a
์ข๋ณ ํด๋์ค ์ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝํด์ผ ํ๋ค. (Dog
is a
Animal
) - ๋ค์ด์บ์คํ
Downcasting
- ์์ ํด๋์ค๋ฅผ ํ์ ํด๋์ค ํ์ ์ผ๋ก ๋ณํํ๋ ๊ฒ.
instanceof
๋ผ๋ ์๋ฐ ์์ฝ์ด๋ฅผ ํตํด ์ธ์คํด์ค์ ์ค์ ํ์ ์ ํ์ธํ ์ ์๋ค.
- ์์๊ด๊ณ๋ฅผ ๋งํ๋ ๋ ๋ค๋ฅธ ํํ์ด๋ค.
this์ super
this
๋ "์ด ๊ฐ์ฒด"๋ผ๋ ์๋ฏธ์ด๋ค.- ์์ฑ์์ ๋ฉ์๋ ๋ด์์ ์ฌ์ฉํ ์ ์๋ ์์ฝ์ด์ด๋ค.
- ๋งค๊ฐ๋ณ์๊ณผ ์ธ์คํด์ค๋ณ์์ ์ด๋ฆ์ด ๋ณ์๋ช
์ด ๊ฐ์ ๋,
์ธ์คํด์ค ๋ณ์๋ฅผ ๋ช ์์ ์ผ๋ก ํํํ๊ธฐ ์ํดthis.์ธ์คํด์ค๋ณ์
์ ๊ฐ์ด ํํํ๋ค.
super;
๋ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ฅผ ๋ช ์์ ์ผ๋ก ํธ์ถํ ๋ ์ฌ์ฉํ๋ค.super.๋ฉ์๋๋ช ()
๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋ถ๋ชจ ํด๋์ค์ ํน์ ๋ฉ์๋๋ฅผ ๋ช ์์ ์ผ๋ก ํธ์ถํ ์ ์๋ค.
1/16 ์ค๋์ ์๋จ์ด
*property ํ๋กํผํฐ * (n) ์์ฑ. / ์ฌ์ฐ,์์ ๋ฌผ / ๋ถ๋์ฐ / ๊ฑด๋ฌผ
(ํ๋ก๊ทธ๋๋ฐ) - ์ถ์ฒ ์ํค๋ฐฑ๊ณผ
์ผ๋ถ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํ๋(๋ฐ์ดํฐ ๋ฉค๋ฒ)์ ๋ฉ์๋ ๊ฐ ๊ธฐ๋ฅ์ ์ค๊ฐ์ธ ํด๋์ค ๋ฉค๋ฒ์ ํน์ํ ์ ํ. ํ๋กํผํฐ์ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ ์ผ๋ฐ์ ์ผ๋ก getter/setter๋ฉ์๋ ํธ์ถ๋ก ๋ณํ๋๋ค.
์ด์ด์ ํด์ผ ํ๋ ๊ณต๋ถ
๊ฐ์ฒด์งํฅ ์ค๊ณ์ ํ๋ก๊ทธ๋๋ฐ
ํค์๋ ์ค์ฌ ๊ณต๋ถ + JK์์ ๊ณผ ์ฐธ๊ณ ์๋ฃ ํตํ ๋ณต์ต.
SOLID์์น ์์ SRP๋จ์ผ์ฑ ์์์น, OCP๊ฐ๋ฐฉ-ํ์์์น, LSP๋ฆฌ์ค์ฝํ ์นํ ์์น ์ ๋ฆฌ
๋คํ์ฑ polymorphism
์บก์ํ encapsulation
์ถ์ํ vs ๊ตฌ์ฒดํ
Classification ๋ถ๋ฅ
Indirection ๊ฐ์ ์ฐธ์กฐ
instance reference
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL - Codesquad] ์๋ฐ ArrayList null๊ฐ ์ ๊ฑฐ / ๋์๋ฌธ์ ํ์ธ (2) | 2021.01.20 |
---|---|
[TIL - Codesquad] ๋ฏธ์ 5 - ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, ๋๋ค ํํ์, ํด๋ก์ , ์คํธ๋ฆผ (0) | 2021.01.18 |
[TIL - Codesquad] (0) | 2021.01.15 |
[TIL - Codesquad] ์ง์ , ์ผ๊ฐํ, ์ง์ฌ๊ฐํ (2) | 2021.01.14 |
[TIL - Codesquad] ์๊ณ ๋ฆฌ์ฆ ๋๋ฒ๊น (6) | 2021.01.13 |