Java

[JAVA] 객체지향 프로그래밍 (OOOP)

Wootaeng 2021. 6. 6. 20:09
728x90

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

자바를 사용하고 안드로이드를 한다면 필수적으로 알고 넘어가야하는 개념이다

컴퓨터 프로그래밍 패러다임 중 하나로 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 수행하는 프로그래밍 방법
다른 객체와 상호작용할 수 있는 재사용 가능한 객체를 이용하여 문제를 해결하는 방법


객체 지향 프로그래밍의 장, 단점

장점

1.모듈성 (유지보수가 쉬움)

특정 객체의 소스코드를 다른 객체의 소스코드와 분리하여 독립적으로 작성하고 유지 관리
반대 개념인 절차적 프로그래밍 에서는 코드 수정시 일일이 찾아 수정해야하는 반면 객체지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수 혹은 메서드로 있기 때문에 해당 부분만 수정하면 된다.

2.은닉성

개체의 내부구현에 대한 상세 정보를 외부에 노출하지 않고 다른 객체와 상호작용 할 수 있는 방법(메서드)을 제공한다. 정보를 외부로 노출하지 않기 때문에 내부 정보를 보호할 수 있으며, 외부에서는 정보 은닉된 객체의 내부구현을 모르기때문에 복잡성이 감소 되는 장점
private 와 public 을 사용

3.코드재사용

사용하려는 객체가 이미 존재하는 경우에 새로 만들지 않고 재사용이 가능하다
남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다


단점

1.개발속도가 느림

설계단계부터 많은 시간이 소요되기에 개발속도가 느리다

2.처리 속도가 상대적으로 느림

3.객체가 많아지면 용량이 커질 수 있음

객체지향 언어의 핵심적인 키워드 (keyword)

캡슐화(Encapsulation)

  • 캡슐화기능과 특성의 모을을 "클래스" 라는 "캡슐" 에 모아두는 것.
  • 접근제어자(private, public, protected)를 사용해서 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 한다.
  • 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 정보은닉을 의미한다.

상속(Inheritance)

  • 자식 클래스의 변경은 부모에게 영향을 미치지 않는다.
  • extends 라는 키워드를 이용하여 부모클래스의 속성과 기능을 그대로 이어받아 자식 클래스에서 사용할 수 있게하고 기능의 일부분 을 수정해야할 경우 자식클래스에서 해당 기능만 수정하여 재 사용 할 수 있게 하는 것.

추상화(abstraction)

  • ≠abstract 클래스 , 메서드 와는 다른 개념
  • 불필요한 정보는 숨기고 중요한 정보만을 표현하며, 공통의 속송이나 기능을 묶어 이름을 붙이는 것 (→ 사자,호랑이,늑대,여우 를 묶어서 동물 로 표현하는 것 )

⭐다형성(polymorphism)

  • 같은 메소드의 매게 변수에 따라 다르게 동작하는 오버로딩(Overloading)
  • 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 (상속 개념) →오버라이딩(Overriding)
728x90
반응형