Java

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

에어팟맥스 2022. 6. 21. 22:47

객체지향(중심)프로그래밍(OOP) 이란?
  →  field(= attribute, property, 속성) 와 method(= operation, function, 기능, 행위) 로 구성된 클래스를 통해
      객체(= instance, 인스턴스)를 만들고, 데이터처리와 같은 상호작용을 만들어진 객체를 가지고 프로그래밍화 하는것을

      OOP 라고 부른다.

  →  예를 들어, 쇼핑몰 프로그램에 있어서 어떤 회원이 어떤 제품을 주문하는것을 프로그래밍 하려고 한다. 
       주문이라는 데이터 처리를 위해서는 어떤 회원이 어떤 제품을 언제 몇 개를 주문했다라는 정보를 담아야 한다. 
       이것을 위해서 "주문" 이라는 클래스를 만드는데 이 "주문" 클래스의 field 로 "회원" 클래스와 "제품" 클래스가

       들어가게 된다. 
        또한 "주문" 클래스의 method 로 주문결과를 화면에 보여주는 기능이 들어가야 할 것이다. 
       이와같이 "회원" 클래스, "제품" 클래스, "주문" 클래스를 통해 객체를 만들고 객체들간의 상호작용을 논리적으로

       프로그래밍 하는것을 OOP라고 부른다.
 
    ※ OOP 의 4가지 특징(!!!!매우 중요!!!!)
    → 1. 상속성(Inheritance) : 클래스의 재사용과 소스 코드의 중복제거를 목적으로 하는 기술 
    → 2. 추상화(Abstraction) : 프로그램이 필요로 하는 실제 데이터들을 모델링하는 기술 
    → 3. 캡슐화(EnCapsulation == 은닉화) : 객체지향의 가장 중요한 데이터 보호 기술   
    → 4. 다형성(Polymorphism) : 상속을 이용하여 여러 클래스 타입을 하나의 클래스 타입으로 다루는 기술 
 
 
     구인구직 어플리케이션 프로그래밍 제작시 필요한 요소(부품)가 무엇이 있는지 생각해보자.
     아주 다양하고, 많은 요소들이 필요할 것이다.
 
    예를 들어,
    구직자, 구인회사, 채용.... 등등등 많이 있다.
    이러한 요소(부품)들이 바로 객체인데 이 객체를 만드는 설계도면이 클래스이다.
 
    위와(구인구직 어플리케이션 프로그래밍 제작) 같이 현실세계에 존재하는 다양한  객체들을 각각 하나하나

    추상화 시켜서 클래스로 옮기는 것을 객체지향 프로그래밍(OOP)이라고 한다.

    여기서 추상화(abstraction)란?
    → 일반적인 의미의 추상화란 어떤 물체(object)에서 주된 특징을 부각시켜 표현하고, 나머지 부분은 과감하게 생략하는          것을 말한다.
        추상화의 반대는 아주 시시콜콜한것(세세한 것)까지 전부 다 묘사하는 것을 말하는데 

        이것을 정밀화 라고 말한다.
        
        객체지향 프로그래밍(OOP)에서 사용되는 추상화도 이와 비슷하다.
        어떤 하나의 물체를 대표하는 속성(명사, 멤버변수)과 기능(동사, 메소드)을 추출해내는 것을 
        객체지향 프로그래밍(OOP)에서 "추상화" 라고 한다. 
 
    >>> 예를 들어, 구인구직 어플리케이션 프로그래밍 제작시 필요한 부품(요소)중 하나인 "구직자" 에 대해서 알아보자.
           "구직자" 가 가지고 있는 속성(명사, 멤버변수)과 행동양식(기능, 동사, 메소드)을 뽑아보자.
        
        1) 속성(property, attribute, field)은 멤버변수가 되고,
        2) 행동양식(기능)은 메소드가 되는 것이다.
 
    Gujikja(클래스)
       |
       |-- 속성(property, attribute, field) : 아이디, 암호, 성명, 연락처, 이메일, 주소, 학력, 희망구직직종, 희망연봉.....  
       |-- 행동양식(기능, 메소드) : 구직자로 접속(로그인)할수 있는 기능, 구직자정보를 조회해주는 기능, 구직자정보를 변경해주는 기능, .......

 

'Java' 카테고리의 다른 글

Final  (0) 2022.06.25
접근지정자, 생성자  (0) 2022.06.25
Date, Calendar 를 사용하여 날짜 나타내기  (0) 2022.06.21
StringBuilder(), StringBuffer()  (0) 2022.06.21
String - String.join(), replaceAll(), replaceFirst()  (0) 2022.06.19