본문 바로가기
Back-End/Java

[java] 객체 지향 프로그래밍(Object Oriented Programing)

by LeeGangEun 2022. 1. 25.

 

객체 지향 프로그래밍이란

• 객체 지향적인 프로그래밍. 즉, 절차적으로 프로그램을 짜는것이 아닌

   객체의 관점에서 프로그래밍을 하는 것이다.

• 객체들은 서로 메시지를 주고 받을 수 있으며 데이터를 처리할 수 있다.

 

장점

• 클래스에 하나의 문제 해결을 위한 데이터를 모아 응집력을 강화하고 결합력을 약하게 할 수 있다.

• 유지보수 용이성 및 대형 프로젝트에 적합

 

단점

• 처리속도가 느리고 절차형 프로그래밍보다 설계가 어렵다.

 

객체지향 프로그래밍 기본 구성 요소

클래스(Class)

• 같은 종류의 집단에 속하는 속성과 행위를 정의한 것. 다른 클래스와 독립적으로 디자인해야 한다.

 

객체(Object)

• 클래스의 인스턴스(Instance) 상위 클래스의 속성을 갖고 있으면서 개별적인 특성과 행위(Method)또한 갖고 있다.

 

메소드(Method)

• 클래스로부터 생성된 객체를 사용하는 방법. 객체의 속성을 조작하는 데 사용된다.

 

객체 지향 프로그래밍의 특성

 

추상화(Abstraction)

• 사물의 추상적 특징을 파악해 이를 개념으로 다루는 수단.

• 객체들의 공통된 특징을 파악해 구제적인 개념이 아닌 추상적인 개념에 의존하여 클래스를 설계한다.

 

캡슐화(Encapsulation)

• 높은 응집도와 낮은 결합도를 유지할 수 있도록 설계함으로써 유연하게 대처할 수 있다.

캡슐화를 통해 불필요한 정보를 감추고, 정보은닉을 할 수 있다. 

• 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미한다.

 

다형성(Polymorphism)

• 다형성은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다.

• 형태가 같은데 다른기능을 하는 것을 의미한다.(코드의 재사용) 

 

상속성(Inheritance)

• 상속이란 기존 상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념이다.

• 기존 클래스의 기능을 가져와 재사용과 동시에 새로운 기능을 추가 가능하다.

 

 

 

 

 

강사님 꿀팁 

 

1. T자형 인재가 되자 전반적인 지식을 바탕으로 두되,특정 분야에 대해서는 전문성 높은 역량을 가져야 한다.

2. 백문이 불여일타 (백번 묻는것보다 한번 타자치는것이 낫다.)

3. 나무를 먼저보고 숲을봐라(개발자의 미덕)

4. 디테일함에 집착하지말자 거시적인 관점에서 보는것이 필요하다. (내 얘기인듯 ..?)