Java/객체지향 프로그래밍

JAVA / 객체와 객체 지향 프로그래밍

CBJ 2022. 6. 2. 11:31

※ 출처

https://fastcampus.co.kr/dev_online_javaend

https://blog.naver.com/gitacademy01/222394033958

https://jwprogramming.tistory.com/121

https://brownbears.tistory.com/407

https://88240.tistory.com/228


객체 (Object)
  • 사전적 의미로 의사나 행위가 미치는 대상
  • 구체적, 추상적 데이터의 단위 ( 학생, 회원, 주문, 배송)
  • 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말함
  • 자바에서는 이 속성과 동작을 각각 필드(field)와 메서드(method)라 부름

 

절차 지향 프로그래밍
  • 대표적인 언어로 C언어가 있다. 
  • 절차 지향 언어는 객체를 순차적으로 처리하여 프로그램 전체가  유기적으로 연결되어야 한다.
  • 시간이나 사건의 흐름에 따른 프로그래밍
    ex) 차량 : 시동을 건다 → 주차 브레이크(사이드 브레이크)를 푼다 → 기어를 변경한다 → 엑셀을 밟는다
장점 단점
컴퓨터의  처리구조와 유사해 실행속도가 빠름 유지보수가 어려움
  실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움
  디버깅이 어려움

 

객체 지향 프로그래밍
  • 실제 세계를 모델링하여 소프트웨어를 개발하는 방법
  • 4가지 특징
캡슐화
  • 캡슐화란 관련된 데이터와 알고리즘이 하나의 묶음으로 정리된 것
  • 데이터를 감추고 외부 세계와의 상호작용은 메서드를 통하는 방법
  • 외부 객체는 객체내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메서드만 이용 가능
  • 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위함
  • 자바언어는 캡슐화된 맴버를 노출/숨김 여부를 결정하기 위해 접근 제한자를 사용
    • 접근 제한자는 객체의 필드와 메서드의 사용 범위를 제한함으로써 외부로부터 보호
상속
  • 이미 작성된 클래스를 이어 받아서 새로운 클래스를 생성하는 기법
  • 상위 객체를 재사용함으로써 하위 객체를 쉽고 빨리 설계할 수 있도록 도와줌
  • 반복된 코드의 중복을 줄여줌
다형성
  • 상속과 연관된 개념으로, 하나의 객체가 다른 여러 객체로 재구성되는 것
  • 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있게 해 줌
추상화
  • 객체 지향적 관점에서 클래스를 정의하는 것을 추상화라고 정의 내릴 수 있다.
    ex) 물고기, 사자, 뱀 = 동물 or 생물  >> 동물 or 생물이라고 묶는 것을 추상화
장점 단점
코드의 재활용성이 높음 처리속도가 절차지향보다 느림
코딩이 절차지향보다 간편함 설계에 만흔 시간소요가 들어감
디버깅이 쉬움