OOP

2024. 12. 1. 23:26·공부
목차
  1. OOP 특징
  2. 캡슐화
  3. 상속
  4. 다형성
  5. 추상화
  6. OOP 5대 원칙 (SOLID)
 

객체지향 프로그래밍(OOP, Object-Oriented Programming)

OOP란 객체를 중심으로 프로그램을 설계하고 개발하는 방법론이다.

객체란 데이터와 이를 처리하는 함수(메서드)를 묶어서 하나의 독립적인 단위로 만든 것이다. 

 

OOP 특징

 

캡슐화

캡슐화는 객체의 데이터와 메서드를 하나로 묶고, 외부에서 직접 접근하지 못하도록 제한한다.
데이터를 보호하기 위해 getter/setter 메서드를 사용한다.

public class Person {
    private String name; // private으로 데이터 은닉
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
}

 

상속

기존 클래스(부모 클래스)의 기능을 물려받아 새로운 클래스(자식 클래스)를 생성하는 것이다.
코드의 재사용성을 높이고, 확장성을 높이는 데 사용된다.

public class Animal {
    public void eat() {
        System.out.println("먹는다");
    }
}

public class Dog extends Animal {
    public void bark() {
        System.out.println("짖는다");
    }
}

 

다형성

하나의 객체가 여러 가지 형태를 가질 수 있도록 하는 것이다.
부모 클래스 타입으로 자식 클래스를 참조하거나, 메서드 오버라이딩을 통해 구현한다.

public class Animal {
    public void sound() {
        System.out.println("소리를 낸다");
    }
}

public class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("멍멍");
    }
}

public static void main(String[] args) {
    Animal animal = new Dog(); // 부모 타입으로 참조
    animal.sound(); // "멍멍" 출력
}

 

추상화

중요한 정보만 추려내고, 불필요한 세부 사항을 감추는 것이다.
추상 클래스를 사용하거나 인터페이스를 활용하여 설계한다.

public abstract class Animal {
    public abstract void sound(); // 추상 메서드
}

public class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("야옹");
    }
}

 

추상화를 통해 공통점을 기반으로 다양한 객체를 정의할 수 있다.

 

OOP 5대 원칙 (SOLID)

 

SRP(단일 책임 원칙): 클래스는 하나의 책임만 가져야 한다.

OCP(개방-폐쇄 원칙): 기존 코드는 수정하지 않고 확장할 수 있어야 한다.

LSP(리스코프 치환 원칙): 자식 클래스는 부모 클래스를 대체할 수 있어야 한다.

ISP(인터페이스 분리 원칙): 필요한 인터페이스만 구현하도록 설계한다.

DIP(의존 역전 원칙): 고수준 모듈이 저수준 모듈에 의존하지 않아야 한다.

'공부' 카테고리의 다른 글

[JAVA, Python] 프로그래머스 120583 중복된 숫자 개수  (0) 2024.11.24
JAVA와 C#의 차이점  (0) 2024.11.24
클라우드 컴퓨팅, AWS  (1) 2024.11.20
[JAVA] CodeUp 4891 : 행복  (0) 2024.11.18
자료구조 정리  (0) 2024.11.18
  1. OOP 특징
  2. 캡슐화
  3. 상속
  4. 다형성
  5. 추상화
  6. OOP 5대 원칙 (SOLID)
'공부' 카테고리의 다른 글
  • [JAVA, Python] 프로그래머스 120583 중복된 숫자 개수
  • JAVA와 C#의 차이점
  • 클라우드 컴퓨팅, AWS
  • [JAVA] CodeUp 4891 : 행복
yn98
yn98
좌우명 : 여전할 것 인가, 역전할 것 인가? 백엔드 개발자가 되고싶은 역전하고 있는 개발자 꿈나무의 블로그입니다. 개발을 하면서 공부한 것들을 기록합니다. 24.06 ~
  • yn98
    개발 꿈나무
    yn98
  • 전체
    오늘
    어제
    • 분류 전체보기 (131)
      • Python (3)
      • 공부 (7)
      • DB (7)
      • JAVA (24)
      • JSP (9)
      • jQuery (2)
      • HTML (3)
      • Spring (20)
      • 웹 (4)
      • C (1)
      • Git (2)
      • 에러일기 (19)
      • 프로젝트 (6)
      • 책 (21)
        • 멘토씨리즈 자바 (14)
        • 2024 수제비 정보처리기사 (7)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Notion
  • 공지사항

  • 인기 글

  • 태그

    정처기 실기
    2-layered 아키텍처
    html
    @service
    jsp
    어노테이션
    멘토씨리즈 자바
    java
    codeup 4891 : 행복
    티스토리챌린지
    정보처리기사 실기
    @repository
    스프링 프레임워크
    recoverabledataaccessexception
    오버로딩
    수제비
    오블완
    MVC
    객체지향
    aop
    DispatcherServlet
    Di
    Spring
    ViewResolver
    @Component
    상속
    생성자
    정보처리기사
    이벤트 스케줄러
    정처기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
yn98
OOP

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.