Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 단어단위로떨어지기
- npm install
- minwidth
- 의존성문제
- 플러그인
- node 오류
- window 정책변경
- maxwidth
- 웹아이콘
- slickslider
- Git clone
- npm start
- vscode git clone
- legacy-peer
- fontawesome
- node설치
- 아이콘사용법
- 그누보드반응형
- owlcarousel
- git lab clone
- 글자들여쓰기
- 동적객체
- react npm install
- package.json
- 이미지반응형
- XEIcon
- MediaQuery
- npm install 문제
- 정적객체
- googleicon
Archives
- Today
- Total
어쩌다 알게 된 ƪ(•̃͡•̃͡ ƪ
[개념] 객체 지향 언어 (OOP) 개념 잡기 본문
728x90
🔹 객체 지향 언어란?
객체 지향 프로그래밍(Object-Oriented Programming, OOP) 언어는 객체(Object)라는 개념을 중심으로 프로그램을 작성하는 방식
- 사물(객체)의 특징(속성)과 행동(메서드)을 코드로 구현하는 방식
ex)
객체: 자동차를 만든다고 가정할 때
속성: 색상, 속도, 브랜드
메서드: 가속(), 감속(), 멈춤() 으로 표현
class Car {
String color; // 속성
int speed; // 속성
void accelerate() { // 행동
speed += 10;
System.out.println("속도가 " + speed + "km/h로 증가!");
}
}
✅ 객체 지향 언어의 주요 특징 (4가지)
1️⃣ 캡슐화(Encapsulation)
- 데이터 보호: 클래스 내부의 변수를 private으로 숨기고, 외부에서는 메서드를 통해 접근
- 실수로 데이터를 변경하는 것을 방지
🔹 예제: private 변수와 getter/setter 사용
class Person {
private String name; // 직접 접근 불가능
// public 메서드를 통해 접근 가능
public void setName(String newName) {
name = newName;
}
public String getName() {
return name;
}
}
2️⃣ 상속(Inheritance)
- 부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 것
- 코드 재사용을 쉽게 하고, 유지보수를 용이하게 함
🔹 예제: extends 키워드 사용 (부모-자식 관계)
class Animal {
void sound() {
System.out.println("동물 소리!");
}
}
class Dog extends Animal {
void bark() {
System.out.println("멍멍!");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.sound(); // 부모 클래스의 메서드 사용 가능
dog.bark(); // 자식 클래스의 메서드 사용
}
}
3️⃣ 다형성(Polymorphism)
- 같은 메서드 이름이지만, 서로 다른 기능을 수행할 수 있음
- 오버로딩(Overloading): 같은 클래스 내에서 같은 이름의 메서드를 여러 개 정의
=> 메서드 이름은 같지만, 매개변수의 타입이나 개수가 다를 때 허용 - 오버라이딩(Overriding): 부모 클래스의 메서드를 자식 클래스에서 재정의
🔹 예제: 오버로딩(Overloading)
class Animal {
void sound() { // 첫 번째 메서드 (매개변수 없음)
System.out.println("동물이 소리를 낸다");
}
void sound(String type) { // 두 번째 메서드 (매개변수 추가)
System.out.println(type + " 소리를 낸다");
}
}
public class Main {
public static void main(String[] args) {
Animal a = new Animal();
a.sound(); // "동물이 소리를 낸다" 출력
a.sound("강아지"); // "강아지 소리를 낸다" 출력
}
}
🔹 예제: 오버라이딩(Overriding)
class Animal {
void sound() {
System.out.println("동물이 소리를 낸다");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("멍멍!");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
myDog.sound(); // "멍멍!" 출력 (자식 클래스의 메서드 호출)
}
}
4️⃣ 추상화(Abstraction)
- 불필요한 정보는 숨기고, 중요한 정보만 노출
- 인터페이스(interface)나 추상 클래스(abstract class) 사용
🔹 예제: 추상 클래스와 인터페이스
abstract class Animal {
abstract void makeSound(); // 구현은 하지 않고, 자식 클래스에서 반드시 오버라이딩해야 함
}
class Cat extends Animal {
@Override
void makeSound() {
System.out.println("야옹!");
}
}
✅ 3. 객체 지향 언어 vs. 절차 지향 언어
| 비교 | 객체 지향 언어 (OOP) | 절차 지향 언어 |
| 기본 단위 | 객체(Object) | 함수(Procedure) |
| 코드 재사용 | 상속(Inheritance) 가능 | 코드 복사 필요 |
| 데이터 보안 | 캡슐화(Encapsulation) 가능 | 데이터 직접 접근 |
| 예제 언어 | Java, Python, C++, C# | C, Pascal |
✔ 절차 지향 프로그래밍은 순차적으로 코드를 실행하는 방식이라 함수 중심
✔ 객체 지향 프로그래밍은 데이터를 중심으로 코드를 구성하는 방식이라 객체 중심
✅ 4. 대표적인 객체 지향 프로그래밍 언어
✅ 객체 지향을 지원하는 대표적인 언어:
- Java
- Python
- C++
- C#
- Swift
- Kotlin
- JavaScript (ES6 이후 클래스 지원)
💡 하지만 일부 언어는 객체 지향과 절차 지향을 모두 지원하는 경우도 있음!
- Python, JavaScript는 객체 지향 프로그래밍도 가능하지만, 절차 지향적으로도 작성할 수 있음.
✔️ 객체(Object) = 속성(변수) + 행동(메서드)
✔️ 객체 지향 언어(OOP)는 "현실 세계를 코드로 표현하는 방식"
✔️ 4대 핵심 개념: 캡슐화, 상속, 다형성, 추상화
✔️ 객체 지향 언어에는 Java, Python, C++ 등이 포함됨
✔️ OOP 덕분에 코드 재사용, 유지보수, 확장성이 뛰어남!
728x90
'개발' 카테고리의 다른 글
| CRUD란? (0) | 2025.09.16 |
|---|---|
| 개발 언어 (1) | 2025.03.10 |
| [원격 연결 프로그램] FileZilla 비밀번호를 ssh(.pem)로 로그인하기 (0) | 2025.03.10 |
| [원격 연결 프로그램] MobaXterm FTP 연결 방법 (0) | 2025.03.10 |
Comments
