μΆμ ν΄λμ€μ κ°λ κ³Ό μΆμ ν΄λμ€λ₯Ό μ¬μ©νμ¬ μ λ ¬ μκ³ λ¦¬μ¦ κ΅¬νπ€
01. μΆμ ν΄λμ€
1. μΆμ(abstract) λ©μλ
μ¬μ μν κ²μΌλ‘ μμλλ λ©μλμ λν΄ λ©λͺ¨λ¦¬ λλΉ μμ΄ λ―Έλ¦¬ νΈμΆ κ³νμ μΈμλκΈ° μν΄ μμ±
νλ μ΄μμ μΆμ λ©μλλ₯Ό κ°μ§κ³ μλ ν΄λμ€κ° μΆμ ν΄λμ€
2. μΆμ(abstract) ν΄λμ€
μ½κ² λ§ν΄ λ©μλ μ΄λ¦λ§ λ§λ€μ΄λκ³ , μ무κ²λ μλ ν΄λμ€ (κ»λ°κΈ°λ§ μ‘΄μ¬)
μ μΈO, μ μX
νΉμ§
final ν΄λμ€λ μμμ κ°μ μ μμΌλ―λ‘ λΆκ°
μΆμ λ©μλκ° μμ΄λ μΆμ ν΄λμ€κ° λ μ μμΌλ, μΆμ λ©μλκ° μλ μΆμ ν΄λμ€λ κ°μ²΄λ₯Ό μμ±νλ κ²μ΄ λΆκ°λ₯ν¨
μΆμ ν΄λμ€λ κ°μ²΄λ₯Ό λ§λ€ μ μμ
β‘ λνμ μΆμ ν΄λμ€: Number, Calendar λ±
02. μΆμ ν΄λμ€
μΆμ ν΄λμ€λ₯Ό μ¬μ©νμ¬ μ λ ¬ μκ³ λ¦¬μ¦ κ΅¬ννκΈ°βοΈ
λ°μ΄ν° μ λ ¬λμ§ μμ λ°μ΄ν°
κΈ°λ₯ λ°μ΄ν°μ κ°μλ₯Ό νμΈνλ λ©μλ, ν¬κΈ°λ₯Ό λΉκ΅νλ λ©μλ, λ λ³μμ λ΄μ©μ λ°κΎΈλ λ©μλ, μ λ ¬νλ μκ³ λ¦¬μ¦
β‘ μ ν, μ½μ , λ²λΈ, ν΅ μ λ ¬ λ± λ€μν μ λ ¬ μκ³ λ¦¬μ¦μ ꡬν λ°©λ²μ 'μ λ ¬ μκ³ λ¦¬μ¦' μΈμλ λμΌ
μμμ μ΄μ©ν λ, λͺ¨λ λ©μλλ₯Ό μμ λ°λλ€λ©΄?
κ° μ λ ¬λ§λ€ μ λ ¬ μκ³ λ¦¬μ¦μ΄ λ€λ₯΄λ―λ‘, λͺ¨λ μ λ ¬ μκ³ λ¦¬μ¦μ νμκ° μμ΄ λ©μλλ₯Ό μ¬μ©ν νμX
λ°λμ νμν λ©μλλ λ§λ€μ΄μ£Όκ³ , 'μ λ ¬νλ μκ³ λ¦¬μ¦λ§νΌμ νμνκΈ΄ νλ°, λλ€κ° λ§λ€μ΄!' λΌλ μλ―Έλ‘ μ΄λ¦λ§ μ μν΄μ€
μμ ν΄λμ€(κ° μ λ ¬ μκ³ λ¦¬μ¦)μ νμν κ²(λ°λ³΅μ μΈ κ²)λ§ κ°μ Έλ€ μ°κ³ μΆμ ν΄λμ€λ‘ μ μΈλ(μ λ ¬ μκ³ λ¦¬μ¦)λ§ μ§μ ꡬνν μ μμ
package ch08.unit5;
public class Ex01_abstract {
public static void main(String[] args) {
int[] num = new int[] { 35, 8, 54, 19, 62, 52 };
// SortINt ss = new SortInt(); // μ»΄νμΌ μ€λ₯. abstract ν΄λμ€λ κ°μ²΄ μμ± λΆκ°
// μΆμ ν΄λμ€λ λ°λμ νμ ν΄λμ€κ° μ‘΄μ¬νκ³ , νμ ν΄λμ€λ₯Ό ν΅ν΄μλ§ κ°μ²΄ μμ± κ°λ₯
SortInt select = new SelectionSort(); // μ
μΊμ€ν
SortInt bubble = new BubbleSort(); // μ
μΊμ€ν
// μ λ ¬ μ λ°μ΄ν°
System.out.print("Source Data: ");
print(num);
select.sort(num);
// bubble.sort(num);
// μ λ ¬ ν λ°μ΄ν°
System.out.print("Sort Data: ");
print(num);
}
private static void print(int[] value) {
for (int i = 0; i < value.length; i++) {
System.out.print(value[i] + " ");
}
System.out.println();
}
}
abstract class SortInt {
private int[] value;
// μΆμ λ©μλ
protected abstract void sorting();
public void sort(int[] value) {
this.value = value;
sorting();
}
// λ°°μ΄μ κΈΈμ΄
// finalλ©μλ: νμ ν΄λμ€μμ μ¬μ μ λΆκ°
protected final int length() {
int n = -1;
if (value != null)
n = value.length;
return n;
}
// λ°°μ΄ μμ λΉκ΅
protected final int compare(int i, int j) {
return value[i] - value[j];
}
// λ°°μ΄μ λ μμ κ° μλ‘ λ°κΎΈκΈ°
protected final void swap(int i, int j) {
int t = value[i];
value[i] = value[j];
value[j] = t;
}
}
class SelectionSort extends SortInt {
@Override
protected void sorting() {
for (int i = 0; i < length() - 1; i++) {
for (int j = i + 1; j < length(); j++) {
if (compare(i, j) > 0) {
swap(i, j);
}
}
}
}
}
class BubbleSort extends SortInt {
@Override
protected void sorting() {
boolean flag = true;
for (int i = 1; flag; i++) {
flag = false;
for (int j = 0; j < length() - i; j++) {
if (compare(j, j + 1) > 0) {
swap(j, j + 1);
flag = true;
}
}
}
}
}
'π»Programming > βοΈJava' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA] DAOμ VO μ μμ μ¬μ©λ² (0) | 2022.07.31 |
---|---|
[JAVA] μ΄κ±°ν νμ (0) | 2022.07.27 |
[JAVA] κ°μ²΄μ§ν₯_μΈν°νμ΄μ€ (0) | 2022.07.26 |
[JAVA]κ°μ²΄μ§ν₯_μμκ³Ό κ΄λ ¨ν μ©μ΄(2) (0) | 2022.07.25 |
[JAVA] κ°μ²΄μ§ν₯_μμ (0) | 2022.07.25 |