κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(Object-Oriented Programming, OOP)μ μννΈμ¨μ΄λ₯Ό μ€κ³νκ³ κ΅¬ννλ λ° μ¬μ©λλ νλ‘κ·Έλλ° ν¨λ¬λ€μ μ€ νλμ λλ€. μ΄ ν¨λ¬λ€μμ νμ€ μΈκ³μ κ°μ²΄(object)μ κ·Έ κ°μ²΄ κ°μ μνΈ μμ©μ μ€μ μ λ‘λλ€. μ¬κΈ°μ κ°μ²΄λ λ°μ΄ν°μ κ·Έ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ©μλ(ν¨μ)λ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
λ°λ©΄μ μ μ°¨μ§ν₯ νλ‘κ·Έλλ°μ νλ‘κ·Έλ¨μ λ¨κ³μ μΈ μ μ°¨λ‘ λλμ΄ μ€κ³νκ³ , κ° λ¨κ³μμ νμν λ°μ΄ν°λ₯Ό μ²λ¦¬νλ ν¨μ λλ νλ‘μμ λ₯Ό μ€μ¬μΌλ‘ νλ νλ‘κ·Έλλ° ν¨λ¬λ€μμ λλ€.
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ λ±μ₯ λ°°κ²½
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)μ΄ λ±μ₯ν κ²μ μ£Όλ‘ μννΈμ¨μ΄ κ°λ°μμ λ°μνλ 볡μ‘μ±κ³Ό μ μ§λ³΄μμ μ΄λ €μμ λμνκΈ° μν΄μμμ΅λλ€. OOPλ μ μ°¨μ§ν₯ νλ‘κ·Έλλ°μ λ¨μ μ ν΄κ²°νκ³ λμ± ν¨μ¨μ μΈ μννΈμ¨μ΄ κ°λ°μ κ°λ₯μΌ νλ μ¬λ¬ κ°μ§ νΉμ§μ μ 곡ν©λλ€.
Javaλ₯Ό νμ©ν κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°
// ν΄λμ€ μ μ
class Person {
// λ©€λ² λ³μ (μμ±)
private String name;
private int age;
// μμ±μ
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// λ©μλ (λμ)
public void printPersonInfo() {
System.out.println("Name: " + name + ", Age: " + age);
}
}
// λ©μΈ ν΄λμ€
public class Main {
public static void main(String[] args) {
// κ°μ²΄ μμ± λ° μ΄κΈ°ν
Person person1 = new Person("Alice", 25);
Person person2 = new Person("Bob", 30);
// λ©μλ νΈμΆμ ν΅ν λ°μ΄ν° μΆλ ₯
person1.printPersonInfo();
person2.printPersonInfo();
}
}
μμμμ Person ν΄λμ€λ κ°μ²΄μ μμ±(μ΄λ¦κ³Ό λμ΄)κ³Ό λμ(μ 보 μΆλ ₯)μ μ μνκ³ μμ΅λλ€. Main ν΄λμ€μμλ Person ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±νκ³ μ΄κΈ°νν ν, ν΄λΉ μΈμ€ν΄μ€μ λ©μλλ₯Ό νΈμΆνμ¬ λ°μ΄ν°λ₯Ό μΆλ ₯νκ³ μμ΅λλ€.
μλ°μμλ ν΄λμ€, κ°μ²΄, μμ, λ€νμ± λ±μ κ°μ²΄μ§ν₯μ μΈ κ°λ
λ€μ΄ ν¨κ³Όμ μΌλ‘ μ¬μ©λκ³ μμ΅λλ€. ν΄λμ€λ λ°μ΄ν°μ λ©μλλ₯Ό νλλ‘ λ¬Άμ΄μ μΆμννκ³ , κ°μ²΄λ μ΄λ¬ν ν΄λμ€μ μΈμ€ν΄μ€λ‘μ μ€μ λ‘ λ©λͺ¨λ¦¬μ ν λΉλ©λλ€. μ΄λ₯Ό ν΅ν΄ μ½λμ λͺ¨λμ±κ³Ό μ¬μ¬μ©μ±μ μ¦κ°μν€κ³ , μ μ§λ³΄μκ° μ©μ΄ν ꡬ쑰λ₯Ό λ§λ€ μ μμ΅λλ€.
μ μ°¨μ§ν₯ νλ‘κ·Έλλ°? (Procedural Programming)
μ μ°¨μ§ν₯ νλ‘κ·Έλλ°(Procedural Programming)μ μννΈμ¨μ΄λ₯Ό ꡬνν λ νλ‘μμ (Procedure)λ 루ν΄(Routine) λ±κ³Ό κ°μ νλ‘μμ λ¨μλ‘ κ΅¬μ‘°ννλ νλ‘κ·Έλλ° ν¨λ¬λ€μμ
λλ€. μ΄ ν¨λ¬λ€μμμλ νλ‘κ·Έλ¨μ λ¨κ³μ μΈ μ μ°¨λ‘ λλμ΄ μ€κ³νκ³ , κ°κ°μ λ¨κ³μμ νμν λ°μ΄ν°λ₯Ό μ²λ¦¬νλ ν¨μλ νλ‘μμ λ₯Ό μ€μ¬μΌλ‘ νλ‘κ·Έλ¨μ μμ±ν©λλ€.
μ μ°¨μ§ν₯ νλ‘κ·Έλλ°μμμ μ£Όμ νΉμ§
- νλ‘μμ μ€μ¬ μ€κ³: νλ‘κ·Έλ¨μ μνν΄μΌ νλ μ μ°¨λ λ¨κ³μ λ°λΌ νλ‘μμ λ‘ λλμ΄μ Έ μμ΅λλ€. μ΄ νλ‘μμ λ λ°μ΄ν°μ ν΄λΉ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ μ½λλ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
- λ°μ΄ν°μ μ½λμ λΆλ¦¬: λ°μ΄ν°μ μ½λκ° λͺ μμ μΌλ‘ λΆλ¦¬λμ΄ μμ΅λλ€. μ΄λ λ°μ΄ν°μ ꡬ쑰μ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ μ½λκ° μλ‘ λ 립μ μΌλ‘ μ‘΄μ¬ν¨μ μλ―Έν©λλ€.
- μμ°¨μ μ€ν: μ μ°¨μ§ν₯ νλ‘κ·Έλλ°μμλ λͺ μν μμλλ‘ μ½λκ° μ€νλ©λλ€. μ΄λ λͺ λ Ήμ΄κ° μμ°¨μ μΌλ‘ μνλλ νΉμ±μ κ°μ§κ³ μμ΅λλ€.
- λ³μ μ€μ¬ νλ‘κ·Έλλ°: λ³μμ λ°μ΄ν°μ μνμ μ€μ μ λλ νΉμ§μ΄ μμ΅λλ€. νλ‘κ·Έλ¨μ μνλ λ³μμ μν΄ κ²°μ λλ©°, νλ‘μμ λ λ³μλ₯Ό μ‘°μνμ¬ νλ‘κ·Έλ¨μ λμμ μ μ΄ν©λλ€.
μ μ°¨μ§ν₯ νλ‘κ·Έλλ°μ κ°λ¨νλ©΄μλ μ§κ΄μ μΈ κ΅¬μ‘°λ₯Ό κ°μ§κ³ μμ΄μ μ΄ν΄νκΈ° μ½κ³ , μμ κ·λͺ¨μ νλ‘κ·Έλ¨μμλ ν¨κ³Όμ μΌ μ μμ΅λλ€. C μΈμ΄λ μ νμ μΈ μ μ°¨μ§ν₯ νλ‘κ·Έλλ° μΈμ΄λ‘ μλ €μ Έ μμ΅λλ€. κ·Έλ¬λ ν° κ·λͺ¨μ μννΈμ¨μ΄λ₯Ό κ°λ°νκ±°λ μ μ§λ³΄μν΄μΌ ν λ, κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°κ³Ό κ°μ λ€λ₯Έ ν¨λ¬λ€μμ΄ λ μ μ©ν μ μμ΅λλ€.
CμΈμ΄μμμ μ μ°¨μ§ν₯ νλ‘κ·Έλλ°
C μΈμ΄λ μ νμ μΈ μ μ°¨μ§ν₯ νλ‘κ·Έλλ° μΈμ΄μ΄λ―λ‘, κ°λ¨ν μμλ₯Ό ν΅ν΄ μ΄λ»κ² μ μ°¨μ§ν₯μ μΈ μ½λκ° μμ±λλμ§ μ΄ν΄λ³Ό μ μμ΅λλ€. μλλ C μΈμ΄λ₯Ό μ¬μ©ν κ°λ¨ν μμμ λλ€.
#include <stdio.h>
// ꡬ쑰체λ₯Ό μ¬μ©νμ¬ λ°μ΄ν° ꡬ쑰 μ μ
struct Person {
char name[50];
int age;
};
// ν¨μ μν μ μΈ
void printPersonInfo(struct Person person);
int main() {
// ꡬ쑰체 λ³μ μ μΈ λ° μ΄κΈ°ν
struct Person person1 = {"Alice", 25};
struct Person person2 = {"Bob", 30};
// ν¨μ νΈμΆμ ν΅ν λ°μ΄ν° μΆλ ₯
printPersonInfo(person1);
printPersonInfo(person2);
return 0;
}
// ν¨μ μ μ
void printPersonInfo(struct Person person) {
printf("Name: %s, Age: %d\n", person.name, person.age);
}
μμμμλ ꡬ쑰체(struct)λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό λ¬Άμ΄μ κ΄λ¦¬νκ³ , ν¨μλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ²λ¦¬νκ³ μΆλ ₯ν©λλ€. νλ‘κ·Έλ¨μ νλ¦μ main ν¨μμμ μμνλ©°, λ°μ΄ν°μ κ΄λ ¨λ λμμ printPersonInfo ν¨μμμ μνλ©λλ€. μ΄λ μΌλ°μ μΈ μ μ°¨μ§ν₯μ μΈ μ½λ ꡬ쑰μ λλ€.
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μ₯μ
- λͺ¨λμ± λ° μ¬μ¬μ©μ± κ°ν: OOPμμλ ν΄λμ€μ κ°μ²΄λ₯Ό μ΄μ©νμ¬ λͺ¨λνλ μ½λλ₯Ό μμ±ν μ μμ΅λλ€. ν΄λμ€λ μ½λμ λ°μ΄ν°λ₯Ό ν¨κ» λ¬Άμ΄ νλμ λ¨μλ‘ κ΄λ¦¬νλ©°, μ΄λ‘μ¨ λͺ¨λμ±μ΄ κ°νλκ³ μ¬μ¬μ©μ±μ΄ λμμ§λλ€.
- μμμ ν΅ν μ½λ μ¬μ¬μ©: κ°μ²΄ μ§ν₯ μΈμ΄μμλ μμμ ν΅ν΄ μ΄λ―Έ μ‘΄μ¬νλ ν΄λμ€μ νΉμ±κ³Ό λ©μλλ₯Ό μ¬μ¬μ©ν μ μμ΅λλ€. μ΄λ μ½λμ μ€λ³΅μ μ€μ΄κ³ μ μ§λ³΄μλ₯Ό μ½κ² λ§λλλ€.
- λ€νμ±μΌλ‘ νμ₯μ± μ¦κ°: OOPμμμ λ€νμ±μ λμΌν μΈν°νμ΄μ€λ₯Ό ν΅ν΄ λ€μν νμ μ κ°μ²΄λ₯Ό μ²λ¦¬ν μ μκ² ν©λλ€. μ΄λ μ μ°μ±κ³Ό νμ₯μ±μ μ 곡νλ©°, μλ‘μ΄ κΈ°λ₯μ μΆκ°νκ±°λ λ³κ²½ν λ κΈ°μ‘΄ μ½λμ μν₯μ μ΅μνν©λλ€.
- μΊ‘μνλ‘ λ³΄μ κ°ν: κ°μ²΄ μ§ν₯ μΈμ΄μμλ μΊ‘μνλ₯Ό ν΅ν΄ κ°μ²΄μ μνλ₯Ό μΈλΆλ‘λΆν° 보νΈνκ³ , νμν κ²½μ°μλ§ μ κ·Όμ νμ©ν¨μΌλ‘μ¨ λ³΄μμ κ°νν μ μμ΅λλ€.
- νμ€ μΈκ³ λͺ¨λΈλ§: OOPλ νμ€ μΈκ³μ κ°λ κ³Ό μ μ¬ν λͺ¨λΈμ μ 곡νλ―λ‘ μννΈμ¨μ΄μ μ€κ³μ μ΄ν΄κ° μ¬μμ§λλ€.
- μ μ§λ³΄μ μ©μ΄μ±: κ°μ²΄ μ§ν₯ μΈμ΄λ λ³κ²½μ΄ νμν λΆλΆλ§ μμ ν μ μλλ‘ νλ μ μ°ν ꡬ쑰λ₯Ό μ 곡νμ¬ μ μ§λ³΄μλ₯Ό μ©μ΄νκ² ν©λλ€.
νμ§λ§ μ΄λ€ ν¨λ¬λ€μμ΄λ κ°κ°μ μ₯λ¨μ μ΄ μμΌλ©°, μν©μ λ°λΌ μ μ ν ν¨λ¬λ€μμ μ νν΄μΌ ν©λλ€. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄ νμ μ μ°¨μ§ν₯ νλ‘κ·Έλλ°λ³΄λ€ μ°μν κ²μ μλλ©°, νλ‘μ νΈμ μꡬμ¬νκ³Ό νΉμ±μ κ³ λ €νμ¬ μ μ ν ν¨λ¬λ€μμ μ ννλ κ²μ΄ μ€μν©λλ€.
Object-Oriented Programming (OOP): A software design paradigm that structures a program around objects, each of which encapsulates data and the methods that operate on the data.
Procedural Programming: A software design paradigm that structures a program based on procedures or routines, with each procedure following a sequential set of steps in its execution.
'Programming > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
12 Constructor (0) | 2024.01.19 |
---|---|
11 Class intro - feat. Field (Member variable) (0) | 2024.01.19 |
9 Two-dimensional Arrays (Feat. Object Array) (0) | 2024.01.19 |
8 Array (λ°°μ΄) (0) | 2024.01.19 |
7 while loop (feat. do-while) (0) | 2024.01.07 |
λκΈ