컴퓨터 공학

객체지향개발론 1장 객체지향 프로그래밍 개념 재검토

혼새미로 2015. 11. 27. 02:15
반응형


강의목표 : 설계 패턴을 통해 기존 개발자의 경험 공유. 소프트웨어 개발에 설계패턴 활용 능력 배양. 객체지향 설계 및 구현 능력 배양. 리펙토링 개념 이해. 라이브러리 및 코드 이해 및 분석 능력 배양

설계패턴 : 알렉산더가 건축학 분야에서 처음 제시함. 설계패턴은 자료구조, 알고리즘보다도 상위개념

) --> 

1. 객체지향 프로그래밍 개념 재검토

컴퓨터가 어떤 유용한 일을 하기 위해서는 그것을 할 수 있도록 방법을 알려주어야 함.

보다 편리하게 방법을 알려주기 위해 고급프로그래밍 언어를 개발하여 사용하고 있음.

방법이란 보통 절차를 말함. 따라서 초기 프로그래밍 기법은 절차위주였음. , 어떤 함수들을 만들어야 하는지가 초점이였음.

OOP는에서는 주어진 문제를 해결하기 위해 객체로 모델링할 수 있는 것들을 도출하고, 객체들간의 상호작용을 통해 문제를 해결하는 프로그래밍 패러다임.

) --> 

객체는 행위,상태,식별자를 가짐

캡슐화 : 데이터와 행위를 하나의 단위로 결합. 관리하기 편한 작은 단위를 얻을 수 있으며 이 단위는 재사용이 가능함. 확장, 변경이 용이하며, 그 파급효과를 지역적으로 제한가능. 접근제어를 통해 외부에서 불필요한 요소에 대한 접근을 방지함. 오류방지.

객체지향프로그래밍에서는 프로그램의 목적을 달성하기 위해 필요한 객체들을 식별하고 이들 간에 어떤 상호작용이 필요한지 설계하는 것이 가능 중요함.

캡슐화 : 데이터의 형태를 숨기고 데이터의 접근을 위한 메소드를 제공하는 과정을 캡슐화라고 한다. 캡슐화는 정해지지 않은 방법으로 데이터가 조작되어 객체가 잘못된 상태로 진입하는 것을 방지해줌.

) --> 

클래스는 객체의 모습을 프로그래밍 환경에서 정의하는 틀임.

클래스는 멤버변수와 메소드로 구성됨.

멤버변수는 객체의 상태를 모델링하며, 메소드는 객체의 행위를 모델링함.

인스턴스 : 클래스의 한 객체

자바의 모든 타입은 원시타입 아니면 참조타입임.

private으로 비밀성을 유지할 수 있음

) --> 

클래스의 종류

단일 개념을 나타내는 클래스(Point,Rectangle,Ellipse)

Actor : 어떤 작업을 해주는 클래스 (Scanner,StringTokenizer,Random)

유틸리티 클래스 : 객체를 전혀 생성하지 않는 클래스->모든 메소드가 static 메소드임(Math)

프로그램을 시작하기 위해 만든 클래스 : main메소드를 포함하는 클래스

) --> 

클래스는 높은 응집성과 낮은 결합성을 가져야함

응집성 : 단일 개념을 나타내야 한다는 것을 말함

결합성 : 다른 클래스와 관계를 말하는 것으로 낮은 결합성이란 서로에게 영향을 주는 것이 적다는 것을 말함

) --> 

상속 : 기존 클래스를 이용하여 새 클래스를 정의하는 경우

eg. 긴급주문은 일반 주문 클래스를 상속하여 정의함

상속은 코드의 재사용을 가능하게 해줌

) --> 

구체화 : 한 클래스가 특정 인터페이스를 구현한 경우

) --> 

사용관계(usa-a) : 한 클래스가 다른 클래스를 사용하는 경우

가장 일반적인 관계

) --> 

포함관계(has-a) 한 클래스의 객체가 다른 클래스의 객체를 포함하고 있는 경우

멤버 변수의 타입이 다른 클래스인 경우

연관: 두 클래스의 객체간에 관계가 형성되지만 그것이 부분-전체와 같은 관계가 아님(개인과 구독잡지)

집합 : 부분-전체관계로서 복합이 보다 강한 개념. 복합의 경우에는 전체가 제거되면 부분도 함께 제거되어야 하는 경우이고 집합은 전체가 제거되어도 부분은 남아 있는 경우로 구분됨 (집합 : 연못과 오리)

복합 : 빌딩과 방

) --> 

인터페이스는 메소드 이름만 공유하고 상속은 멤버 변수 및 메소드를 공유한다.

인터페이스는 서로 논리적으로 관계가 없는 것들을 그룹핑시켜줌

) --> 

상속과 인터페이스의 공통점: 여러타입을 동일 리모콘을 사용하여 사용할 수 있게 해줌.

) --> 

인터페이스를 사용하는 이유 : 범용 프로그래밍과 다형성때문. 해당 인터페이스를 리모콘으로 하여 많은 클래스타입의 객체를 전달할 수 있다.

플러그엔플래이 : 코드 수정 없이 호환되는 다른 객체 사용이 가능하다.

) --> 

is-a관계:부모와 자식

) --> 

상속의 이점 : 코드의 재사용이 가능함. 코드의 확장성이 용이함

부모에 없는 새 메소드를 많이 정의하면 상위 타입을 활용하기 힘들기 때문에 이 경우도 바람직하지 않음

) --> 

추상클래스 : 어떤 클래스의 객체를 생성할 필요가 없는 클래스

명백한 초기화는 처음 값이 항상 같은 경우 사용하면 됨

상속은 부모와 자식간에 논리적인 관계(is-a)가 성립할 경우에만 사용되어야 함

형제클래스간에는 메소드 수의 차이는 적어야 좋고, 메소드 내부 내용의 차이만 있을 때 가장 좋음.

상속관계로 모델링하였을 때 가급적이면 상위타입을 통해 처리하는 것이 바람직함. 이것은 코드의 확장성과 수정용이성에 도움이 됨.

) --> 

반응형

'컴퓨터 공학' 카테고리의 다른 글

객체지향개발론_3장.전략패턴  (0) 2015.11.27
2장. 객체지향 개발 절차와 UML  (0) 2015.11.27
정보보호개론 2장. 암호프로토콜의 개요  (0) 2015.11.27
정보보호개론  (0) 2015.11.27
컴파일러 1장  (0) 2015.11.27