csμ 리/java
OOPλ?(Object-Oriented Programming)
hayoon2
2025. 3. 17. 21:40
λ°μν
SMALL
π‘OOPλ μλ°μ μ£Όμ νΉμ§ μ€ νλλ‘ νλ‘κ·Έλ¨μ κ°μ²΄λΌλ λ¨μλ‘ λλμ΄ κ°λ°νλ νλ‘κ·Έλλ° λ°©μμ΄λ€.
μ¬κΈ°μ κ°μ²΄λ λ°μ΄ν°(μμ±)κ³Ό κ·Έ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ ν¨μ(λμ)μ νλλ‘ λ¬Άμ΄ λλ κ²μ λ§νλ€. μλ₯Ό λ€μ΄ μλμ°¨λ₯Ό κ°μ²΄λ‘ λλ©΄ λ°μ΄ν°λ μλμ°¨μ μμ, λΈλλ, μλ λ±μ΄λ©° ν¨μλ μΆλ°νλ€(), λ©μΆλ€() κ°μ λμλ€μ΄ μλ€.
oopμ 4λ ν΅μ¬ νΉμ§
1. μΊ‘μν(Encapsulation): λ°μ΄ν°μ ν¨μλ₯Ό νλμ λ¨μ(κ°μ²΄)λ‘ λ¬Άκ³ , μΈλΆμμλ νμν λΆλΆλ§ μ κ·Όνλλ‘ λ³΄νΈνλ κ²
// μΊ‘μν μμ
class BankAccount {
private double balance; // μΈλΆμμ μ§μ μ κ·Ό λΆκ°
public BankAccount(double initialBalance) {
balance = initialBalance;
}
// μΈλΆμμλ λ©μλλ₯Ό ν΅ν΄μλ§ balance μ κ·Ό κ°λ₯
public void deposit(double amount) {
balance += amount;
}
public void withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
} else {
System.out.println("μμ‘ λΆμ‘±");
}
}
public double getBalance() {
return balance;
}
}
public class Main {
public static void main(String[] args) {
BankAccount account = new BankAccount(1000);
account.deposit(500);
account.withdraw(300);
System.out.println("νμ¬ μμ‘: " + account.getBalance());
}
}
νμ¬ μμ‘: 1200.0
2. μμ(Inheritance): λΆλͺ¨ κ°μ²΄μ μμ±κ³Ό λμμ μμ κ°μ²΄κ° λ¬Όλ €λ°μ μ¬μ¬μ© ν μ μλ κ²
// λΆλͺ¨ ν΄λμ€
class Animal {
public void sound() {
System.out.println("λλ¬Όμ΄ μ리λ₯Ό λΈλ€");
}
}
// μμ ν΄λμ€
class Dog extends Animal {
@Override
public void sound() {
System.out.println("λ©λ©");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.sound();
}
}
λ©λ©
3. λ€νμ±(Polymorphism): κ°μ ν¨μ μ΄λ¦μ΄λΌλ κ°μ²΄μ λ°λΌ λ€λ₯΄κ² λμνλλ‘ λ§λλ κ²
class Animal {
public void sound() {
System.out.println("λλ¬Όμ΄ μ리λ₯Ό λΈλ€");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("λ©λ©");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("μΌμΉ");
}
}
public class Main {
public static void main(String[] args) {
Animal animal;
animal = new Dog();
animal.sound(); // λ€νμ± μ μ© - Dog
animal = new Cat();
animal.sound(); // λ€νμ± μ μ© - Cat
}
}
λ©λ©
μΌμΉ
4. μΆμν(Abstraction): κΌ νμν μ λ³΄λ§ κ³΅κ°νκ³ , μΈλΆμ¬νμ μ¨κΈ°λ κ²
abstract class Animal {
abstract void sound();
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("λ©λ©");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("μΌμΉ");
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
dog.sound();
Animal cat = new Cat();
cat.sound();
}
}
λ©λ©
μΌμΉ
oopλ₯Ό νμ©νλ©΄ μ’μμ
1. μ μ§λ³΄μκ° μ¬μμ§λ€.
2. νμ₯μ±μ΄ μ’μμ§λ€.
3. νμ μ μ 리νλ€.
μ μ°¨ μ§ν₯ νλ‘κ·Έλλ° vs κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
μ μ°¨μ§ν₯ νλ‘κ·Έλλ°μ μμλλ‘ μ€νλλ μ μ°¨ μ€μ¬μΌλ‘ μ΄λ£¨μ΄μ§ νλ‘κ·Έλλ° λ°©μμ΄λ€.
νλͺ© | μ μ°¨ μ§ν₯ νλ‘κ·Έλλ° (Procedural Programming) | κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (OOP) |
κΈ°λ° | ν¨μ(μ μ°¨, νλ‘μΈμ€)λ₯Ό μ€μ¬μΌλ‘ νλ‘κ·Έλ¨μ κ΅¬μ± | κ°μ²΄(λ°μ΄ν°+ν¨μ)λ₯Ό μ€μ¬μΌλ‘ νλ‘κ·Έλ¨μ κ΅¬μ± |
ꡬ쑰 | μμ°¨μ μΈ νλ¦μ λ§μΆ° ν¨μλ€μ νΈμΆνλ©° μ²λ¦¬ | κ°μ²΄ κ°μ μνΈμμ©μΌλ‘ λμ |
μ½λ μ¬μ¬μ©μ± | μ½λ μ¬μ¬μ©μ΄ μλμ μΌλ‘ μ΄λ €μ(κ°μ κΈ°λ₯μ΄λΌλ λ°λ³΅ μμ± κ°λ₯μ±) | μμ, μΊ‘μν λ±μ ν΅ν΄ μ¬μ¬μ©μ±μ΄ λμ |
μ μ§λ³΄μ | κ·λͺ¨κ° 컀μ§μλ‘ μ μ§λ³΄μ μ΄λ €μ(μ€νκ²ν° μ½λ λ°μ κ°λ₯μ±) | κ΅¬μ‘°κ° λͺ νν΄ μ μ§λ³΄μκ° μλμ μΌλ‘ μ¬μ |
λν μΈμ΄ | C. Pascalλ± | Java, C++ λ± |
μμ | λ μνΌ(μμλλ‘ λ¨κ³ μ€ν) | μλμ°¨(μμ±: μμ, λͺ¨λΈ/ κΈ°λ₯: μ΄μ , μ μ§) |
μ μ°¨ μ§ν₯ νλ‘κ·Έλλ° μμ μ½λ
// μ μ°¨ μ§ν₯ μ½λ - λ°μ΄ν°λ₯Ό λ°λ‘ κ΄λ¦¬νκ³ , ν¨μλ‘ μ²λ¦¬
public class Main {
public static void main(String[] args) {
String[] names = {"μ² μ", "μν¬", "λ―Όμ"};
int[] ages = {25, 23, 30};
String[] jobs = {"κ°λ°μ", "λμμ΄λ", "PM"};
for (int i = 0; i < names.length; i++) {
printPerson(names[i], ages[i], jobs[i]);
}
}
public static void printPerson(String name, int age, String job) {
System.out.println("μ΄λ¦: " + name);
System.out.println("λμ΄: " + age);
System.out.println("μ§μ
: " + job);
System.out.println("------------");
}
}
μ΄λ¦: μ² μ
λμ΄: 25
μ§μ
: κ°λ°μ
------------
μ΄λ¦: μν¬
λμ΄: 23
μ§μ
: λμμ΄λ
------------
μ΄λ¦: λ―Όμ
λμ΄: 30
μ§μ
: PM
------------
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μμ μ½λ
// κ°μ²΄ μ§ν₯ μ½λ - λ°μ΄ν° + κΈ°λ₯μ κ°μ²΄λ‘ λ¬Άμ
class Person {
String name;
int age;
String job;
public Person(String name, int age, String job) {
this.name = name;
this.age = age;
this.job = job;
}
public void introduce() {
System.out.println("μ΄λ¦: " + name);
System.out.println("λμ΄: " + age);
System.out.println("μ§μ
: " + job);
System.out.println("------------");
}
}
public class Main {
public static void main(String[] args) {
Person[] people = {
new Person("μ² μ", 25, "κ°λ°μ"),
new Person("μν¬", 23, "λμμ΄λ"),
new Person("λ―Όμ", 30, "PM")
};
for (Person person : people) {
person.introduce(); // κ°μ²΄κ° μ€μ€λ‘ νλ
}
}
}
μ΄λ¦: μ² μ
λμ΄: 25
μ§μ
: κ°λ°μ
------------
μ΄λ¦: μν¬
λμ΄: 23
μ§μ
: λμμ΄λ
------------
μ΄λ¦: λ―Όμ
λμ΄: 30
μ§μ
: PM
------------
λ°μν
LIST