λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Category135

15 Inheritance 상속은 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)의 μ€‘μš”ν•œ κ°œλ… 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. 상속은 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이고 클래슀 κ°„μ˜ 계측 ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. κΈ°μ‘΄ 클래슀의 νŠΉμ„±μ„ 이어받아 μƒˆλ‘œμš΄ 클래슀λ₯Ό λ§Œλ“€ 수 있게 ν•΄μ£Όλ©°, μ½”λ“œμ˜ 일관성을 μœ μ§€ν•˜κ³  μœ μ§€λ³΄μˆ˜λ₯Ό μš©μ΄ν•˜κ²Œ λ§Œλ“­λ‹ˆλ‹€. μƒμ†μ˜ 4가지 νŠΉμ§• μžλ°”λŠ” 단일 μƒμ†λ§Œμ„ μ§€μ›ν•©λ‹ˆλ‹€. μ΅œμƒμœ„ 쑰상은 Object ν΄λž˜μŠ€μž…λ‹ˆλ‹€. μžμ† ν΄λž˜μŠ€λŠ” μ‘°μƒμœΌλ‘œλΆ€ν„° λͺ¨λ“  멀버λ₯Ό μƒμ†λ°›μŠ΅λ‹ˆλ‹€. μžμ† 클래슀의 λ©€λ²„λŠ” 항상 쑰상보닀 κ°™κ±°λ‚˜ 더 λ§Žμ€ 멀버λ₯Ό κ°–μŠ΅λ‹ˆλ‹€. λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©(Method Overriding) λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©(Method Overriding)은 μžμ‹ ν΄λž˜μŠ€μ—μ„œ λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•˜λŠ” κ°œλ…μž…λ‹ˆλ‹€. 즉, λΆ€λͺ¨ ν΄λž˜μŠ€μ—μ„œ 이미 μ •μ˜λœ λ©”μ„œλ“œλ₯Ό μžμ‹ 클래.. 2024. 1. 20.
14 Encapsulation (feat. Access modifier) μΊ‘μŠν™”(Encapsulation)λŠ” 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)의 ν•œ μ›μΉ™μœΌλ‘œ, 데이터와 κ·Έ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” λ©”μ„œλ“œ(ν•¨μˆ˜)λ₯Ό ν•˜λ‚˜μ˜ 단일 λ‹¨μœ„λ‘œ λ¬ΆλŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λŠ” 정보 은닉(Information Hiding)이라고도 λΆˆλ¦½λ‹ˆλ‹€. μΊ‘μŠν™”λŠ” ν”„λ‘œκ·Έλž¨μ˜ λͺ¨λ“ˆμ„±μ„ 높이고, μ½”λ“œλ₯Ό 더 μž¬μ‚¬μš© κ°€λŠ₯ν•˜κ²Œ λ§Œλ“€λ©°, μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€. μΊ‘μŠν™”μ˜ 핡심 μ•„μ΄λ””μ–΄λŠ” κ΄€λ ¨ μžˆλŠ” 데이터와 κ·Έ 데이터λ₯Ό μ‘°μž‘ν•˜λŠ” ν•¨μˆ˜λ₯Ό ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ λ¬Άμ–΄ μ™ΈλΆ€μ—μ„œ 직접 μ ‘κ·Όν•˜μ§€ λͺ»ν•˜κ²Œ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λŒ€μ‹ , 객체의 λ©”μ„œλ“œλ₯Ό ν†΅ν•΄μ„œλ§Œ 데이터에 μ ‘κ·Όν•˜κ³  μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 객체 λ‚΄λΆ€μ˜ κ΅¬ν˜„ 세뢀사항을 감좔고, μ™ΈλΆ€μ—μ„œλŠ” 였직 곡개된 λ©”μ„œλ“œλ₯Ό ν†΅ν•΄μ„œλ§Œ 객체와 μƒν˜Έμž‘μš©ν•  수 있게 λ©λ‹ˆλ‹€. μ ‘κ·Ό μ œμ–΄μž(Access M.. 2024. 1. 20.
13 Method λ©”μ„œλ“œλŠ” νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ 블둝을 λ‚˜νƒ€λ‚΄λ©°, ν•„μš”ν•  λ•Œ ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ©”μ„œλ“œλŠ” μ½”λ“œλ₯Ό λͺ¨λ“ˆν™”ν•˜κ³  μž¬μ‚¬μš©μ„±μ„ 높이기 μœ„ν•œ μ€‘μš”ν•œ κ°œλ… 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. μžλ°”μ—μ„œλŠ” μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œμ™€ 클래슀 λ©”μ„œλ“œ(λ˜λŠ” 정적 λ©”μ„œλ“œ) 두 가지 μœ ν˜•μ˜ λ©”μ„œλ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이 두 μœ ν˜•μ˜ λ©”μ„œλ“œλŠ” μ„œλ‘œ λ‹€λ₯Έ μš©λ„μ™€ 호좜 방식을 가지고 μžˆμŠ΅λ‹ˆλ‹€. 1. μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ (Instance Method) μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλŠ” νŠΉμ • 객체의 μΈμŠ€ν„΄μŠ€μ— μ’…μ†λœ λ©”μ„œλ“œμž…λ‹ˆλ‹€. 즉, 객체λ₯Ό μƒμ„±ν•΄μ•Όλ§Œ ν•΄λ‹Ή λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€. μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλŠ” λ‹€μŒκ³Ό 같은 νŠΉμ§•μ„ κ°€μ§‘λ‹ˆλ‹€: λ©”μ„œλ“œ μ •μ˜ μ‹œ static ν‚€μ›Œλ“œκ°€ μ—†μŠ΅λ‹ˆλ‹€. λ©”μ„œλ“œ λ‚΄μ—μ„œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. 객체λ₯Ό μƒμ„±ν•œ ν›„μ—μ•Όλ§Œ ν•΄λ‹Ή λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  .. 2024. 1. 20.
12 Constructor μƒμ„±μž(Constructor)λŠ” 객체λ₯Ό 생성할 λ•Œ ν˜ΈμΆœλ˜λŠ” νŠΉλ³„ν•œ λ©”μ„œλ“œλ‘œ, 객체의 μ΄ˆκΈ°ν™”λ₯Ό λ‹΄λ‹Ήν•©λ‹ˆλ‹€. μƒμ„±μžλŠ” 클래슀 이름과 λ™μΌν•˜λ©°, 객체λ₯Ό 생성할 λ•Œ new ν‚€μ›Œλ“œμ™€ ν•¨κ»˜ ν˜ΈμΆœλ©λ‹ˆλ‹€. μžλ°”μ—μ„œλŠ” μƒμ„±μžμ˜ 이름 μ•žμ— λ°˜ν™˜ νƒ€μž…μ„ λͺ…μ‹œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μƒμ„±μžμ˜ μ£Όμš” λͺ©μ μ€ 객체가 λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλ˜κ³  μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ“€μ΄ μ΄ˆκΈ°ν™”λ  λ•Œ ν•„μš”ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 객체λ₯Ό 생성할 λ•Œλ§ˆλ‹€ μ‹€ν–‰λ˜λ©°, μƒμ„±μžλ₯Ό 톡해 객체의 초기 μƒνƒœλ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 더보기 public class Car { // μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ String brand; int year; // λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” μƒμ„±μž public Car(String brand, int year) { this.brand = brand; this.year = ye.. 2024. 1. 19.
11 Class intro - feat. Field (Member variable) 클래슀(Class)λŠ” 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)μ—μ„œ μ‚¬μš©λ˜λŠ” 핡심 κ°œλ… 쀑 ν•˜λ‚˜λ‘œ, λΉ„μŠ·ν•œ νŠΉμ„±μ„ 가진 객체듀을 λ¬Άμ–΄μ„œ μΆ”μƒν™”ν•œ 섀계 λ„κ΅¬μž…λ‹ˆλ‹€. ν΄λž˜μŠ€λŠ” 객체의 μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 속성(멀버 λ³€μˆ˜)κ³Ό 객체가 μˆ˜ν–‰ν•  수 μžˆλŠ” λ™μž‘μ„ μ •μ˜ν•œ λ©”μ„œλ“œ(멀버 ν•¨μˆ˜)둜 κ΅¬μ„±λ©λ‹ˆλ‹€. 즉, ν΄λž˜μŠ€λŠ” μΈμŠ€ν„΄μŠ€(객체)λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ 섀계도와 κ°™μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ•„νŒŒνŠΈ μ„€κ³„λ„μ—λŠ” 창문이 μ–΄λ–€ λ°©ν–₯에 μžˆλŠ”μ§€ μ°½λ¬Έ λͺ¨μ–‘은 μ–΄λ–»κ²Œ ν•  지에 λŒ€ν•œ 정보가 섀계도(클래슀)에 μž‘μ„±λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 그리고 μ„€κ³„λ„μ˜ μ§€μ‹œμ‚¬ν•­μ— λ”°λΌμ„œ 같은 λͺ¨μ–‘μ˜ μ•„νŒŒνŠΈκ°€ λ§Œλ“€μ–΄μ§€λŠ” μ›λ¦¬μž…λ‹ˆλ‹€. ν•„λ“œ(Fields) 클래슀 μ•ˆμ˜ ν•„λ“œ(Fields)λŠ” 클래슀의 멀버 λ³€μˆ˜λ‘œ, 객체의 μƒνƒœλ₯Ό μ €μž₯ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. ν•„λ“œλŠ” 클래슀 내뢀에 μ„ μ–Έλ˜λ©°, 객체의 속성.. 2024. 1. 19.
10 Object-Oriented Programming (feat. Procedural Programming) 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°(Object-Oriented Programming, OOP)은 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€κ³„ν•˜κ³  κ΅¬ν˜„ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. 이 νŒ¨λŸ¬λ‹€μž„μ€ ν˜„μ‹€ μ„Έκ³„μ˜ 객체(object)와 κ·Έ 객체 κ°„μ˜ μƒν˜Έ μž‘μš©μ— 쀑점을 λ‘‘λ‹ˆλ‹€. μ—¬κΈ°μ„œ κ°μ²΄λŠ” 데이터와 κ·Έ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” λ©”μ„œλ“œ(ν•¨μˆ˜)둜 이루어져 μžˆμŠ΅λ‹ˆλ‹€. λ°˜λ©΄μ— μ ˆμ°¨μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ ν”„λ‘œκ·Έλž¨μ„ 단계적인 절차둜 λ‚˜λˆ„μ–΄ μ„€κ³„ν•˜κ³ , 각 λ‹¨κ³„μ—μ„œ ν•„μš”ν•œ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” ν•¨μˆ˜ λ˜λŠ” ν”„λ‘œμ‹œμ €λ₯Ό μ€‘μ‹¬μœΌλ‘œ ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μž…λ‹ˆλ‹€. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ λ“±μž₯ λ°°κ²½ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)이 λ“±μž₯ν•œ 것은 주둜 μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œ λ°œμƒν•˜λŠ” λ³΅μž‘μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ˜ 어렀움에 λŒ€μ‘ν•˜κΈ° μœ„ν•΄μ„œμ˜€μŠ΅λ‹ˆλ‹€. OOPλŠ” μ ˆμ°¨μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ 단점을 ν•΄κ²°.. 2024. 1. 19.
9 Two-dimensional Arrays (Feat. Object Array) 2차원 배열은 ν–‰κ³Ό μ—΄λ‘œ 이루어진 λ°°μ—΄λ‘œ, 각 μš”μ†ŒλŠ” 두 개의 인덱슀둜 μ°Έμ‘°λ©λ‹ˆλ‹€. μ΄λŠ” ν–‰κ³Ό μ—΄μ˜ 2차원 μ’Œν‘œλ‘œ λ°°μ—΄ λ‚΄μ˜ νŠΉμ • μœ„μΉ˜λ₯Ό μ§€μ •ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, νŠΉμ • ν–‰κ³Ό μ—΄μ˜ μš”μ†Œμ— μ ‘κ·Όν•˜κ±°λ‚˜ 값을 ν• λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 배열은 3개의 ν–‰κ³Ό 3개의 μ—΄λ‘œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€. 각 행은 μ€‘κ΄„ν˜Έλ‘œ λ‘˜λŸ¬μ‹ΈμΈ 뢀뢄이고, 각 행은 λ°°μ—΄μ˜ μš”μ†Œλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 2차원 배열은 주둜 ν–‰λ ¬(Matrix)둜 μ‚¬μš©λ˜λ©°, 이λ₯Ό 톡해 λ‹€μ–‘ν•œ μˆ˜ν•™μ  μ—°μ‚°μ΄λ‚˜ 이미지 μ²˜λ¦¬μ™€ 같은 μž‘μ—…μ— μœ μš©ν•˜κ²Œ ν™œμš©λ©λ‹ˆλ‹€. λ°°μ—΄μ˜ ν¬κΈ°λŠ” 각 ν–‰μ˜ 길이가 동일해야 ν•˜λ©°, 각 ν–‰λ§ˆλ‹€ μ„œλ‘œ λ‹€λ₯Έ 길이λ₯Ό κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. 객체 λ°°μ—΄(Object Array)은 λ‹€λ₯Έ 데이터 μœ ν˜• λŒ€μ‹  객체λ₯Ό μš”μ†Œλ‘œ κ°–λŠ” λ°°μ—΄μž…λ‹ˆλ‹€. Javaμ—μ„œ λͺ¨λ“  ν΄λž˜μŠ€λŠ” Ob.. 2024. 1. 19.
8 Array (λ°°μ—΄) 배열은 λ™μΌν•œ μœ ν˜•μ˜ 데이터 μš”μ†Œκ°€ μˆœμ„œλŒ€λ‘œ μ €μž₯된 데이터 κ΅¬μ‘°μž…λ‹ˆλ‹€. 각 μš”μ†ŒλŠ” 인덱슀(일반적으둜 0λΆ€ν„° μ‹œμž‘)에 μ˜ν•΄ μ‹λ³„λ©λ‹ˆλ‹€. 배열은 데이터λ₯Ό 효율적으둜 μ €μž₯ν•˜κ³  κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 인덱슀(Index): λ°°μ—΄μ˜ 각 μš”μ†ŒλŠ” κ³ μœ ν•œ 인덱슀둜 μ‹λ³„λ©λ‹ˆλ‹€. 일반적으둜 0λΆ€ν„° μ‹œμž‘ν•˜μ—¬ λ°°μ—΄μ˜ 길이보닀 ν•˜λ‚˜ μž‘μ€ κ°’κΉŒμ§€μ˜ λ²”μœ„λ₯Ό κ°–μŠ΅λ‹ˆλ‹€. 길이(Length): λ°°μ—΄μ˜ κΈΈμ΄λŠ” 배열에 ν¬ν•¨λœ μš”μ†Œμ˜ 수λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 길이가 7인 배열은 0λΆ€ν„° 6κΉŒμ§€μ˜ 인덱슀λ₯Ό κ°–λŠ” 일 개의 μš”μ†Œλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. μœ ν˜•(Type): 배열은 λ™μΌν•œ μœ ν˜•μ˜ 데이터 μš”μ†Œλ‘œ κ΅¬μ„±λ˜λ©°, 예λ₯Ό λ“€μ–΄ μ •μˆ˜, λ¬Έμžμ—΄, 뢀동 μ†Œμˆ˜μ  수 등이 될 수 μžˆμŠ΅λ‹ˆλ‹€. μ„ μ–Έ 및 μ΄ˆκΈ°ν™”(Declaration and Initialization).. 2024. 1. 19.
25 NoSQL NoSQL은 "Not Only SQL"의 μ•½μžλ‘œ, 전톡적인 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ΄ μ œκ³΅ν•˜λŠ” ν…Œμ΄λΈ” ν˜•νƒœμ˜ μŠ€ν‚€λ§ˆμ™€ SQL 쿼리 μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ‹€μ–‘ν•œ ν˜•νƒœμ˜ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ§€μΉ­ν•©λ‹ˆλ‹€. NoSQL λ°μ΄ν„°λ² μ΄μŠ€λŠ” λŒ€λŸ‰μ˜ λΆ„μ‚°λœ 데이터λ₯Ό 효과적으둜 μ²˜λ¦¬ν•˜κ³  μ €μž₯ν•˜λŠ” 데에 쀑점을 λ‘‘λ‹ˆλ‹€. λ“±μž₯ λ°°κ²½ 인터넷과 λͺ¨λ°”일 기술의 κΈ‰κ²©ν•œ λ°œμ „μœΌλ‘œ λŒ€λŸ‰μ˜ 데이터가 μƒμ„±λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ΄λŸ¬ν•œ λŒ€λŸ‰μ˜ 데이터λ₯Ό 효과적으둜 μ²˜λ¦¬ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€. 전톡적인 λ°μ΄ν„°λ² μ΄μŠ€λŠ” κ³ μ •λœ μŠ€ν‚€λ§ˆλ₯Ό 가지고 μžˆμ–΄ 데이터 λͺ¨λΈ 변경이 μ–΄λ €μ› μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν˜„λŒ€μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” 데이터 λͺ¨λΈμ΄ 자주 λ³€κ²½λ˜λŠ” κ²½μš°κ°€ λ§Žμ•„μ§€λ©΄μ„œ μœ μ—°ν•œ 데이터 λͺ¨λΈμ΄ ν•„μš”ν•΄μ‘ŒμŠ΅λ‹ˆλ‹€. 또 ν•œ, λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œκ³Ό μ„œλΉ„μŠ€μ—μ„œλŠ” κ³ κ°€μš©μ„±, ν™•μž₯μ„±.. 2024. 1. 18.