비객체지향

프로그램을 명령어의 목록으로 바라보고 작성되는 패러다임

int main()
{
   // printf() displays the string inside quotation
   printf("Hello, World!");
   printf("Hello, World! Again");
   return 0;
}


객체지향

실세계에 존재하는 것들을 이용하여 추상화하고 구조화 가능한 패러다임

class Person{
   string savetalk;
   say(string word){
      savetalk=word;      
      print(string);
   }
   sayAgain(){
      say(savetalk + " Again" );
   }   
}
int main()
{
   // printf() displays the string inside quotation
   Person helloMan = new Person();
   helloMan.say("Hello, World");
   helloMan.sayAgain();
   return 0;
}
  • 객체를 정의(속성/기능)하고 ( Class작성)
  • 적절한 시점 오브젝트를 생성하고 ( new Some() )
  • .으로 객체를 접근하여 실행하거나 속성을 변경할수 있음  (  .say() ).

고객이 입장을 하고 말을했다.라고 개발코드로 추상화를 할수있음으로 기존 개발방식에서

큰 패러다임전환이 이루어진것

OOP이전 방식 : 변수를 생성하고, 해당 변수를 출력함수를 통해 출력



위와 같은 그래프는, 이와 같은 패러다임으로 인해 정리된 객체지향의 특징


개발에서 특히 웹분야는 여러가지 이유로 OOP 가 실종되어 가고 있습니다. 비즈니스 레벨에서  OOP를 해야할 이유를 설명할수 없었기 때문입니다.

대표적으로 자바 EJB(EnterPriseJavaBean)를 이용하면 OOP프로그래밍을 할필요가 없습니다. 이때가 자바진영에서는 OOP의 암흑기 였습니다.

JPA와같은 ORM 활동역시, 관계형 데이터베이스와 관련한 개발을 OOP를 활용하자는 개발패러다임입니다.


한가지 예로 웹프레임웍이 제공하는 컨트롤에서 쿼리를 호출하여 반환된 값을 그대로 맵핑하여 응답을 주는것은

OOP코드가 단 한줄도 작성안될 가능성이 높습니다.


도메인 주도개발 패러다임(DDD)으로 OOP를 해야할 이유를 다시설명해주고 있습니다. 

https://medium.com/react-native-seoul/%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%A3%BC%EB%8F%84-%EC%84%A4%EA%B3%84-domain-driven-design-in-real-project-1-%EB%8F%84%EB%A9%94%EC%9D%B8-83a5e31c5e45








  • No labels
Write a comment…