※ 절차지향언어(C, COBOL)
ex) 원을 회전시킨다 (ver1) + 사각형을 회전시킨다(ver up해서 기능 추가)
→ 절차지향개발자들은 회전시킨다는 기능부터 먼저 완성하려고 함
▷ 제공자용 코드(기능용 함수) 만들기
(ver1) int 타입의 매개변수 만듬
void rotate(int radius) {
//radius를 반지름으로 중심축 기준으로 회전시킨다
}
(ver2) 버전마다 rotate 함수의 내용이 변경되어야하는 불편함이 있음
void rotate(int opt, int a, int b){
if(opt == 1) { // 원
a를 반지름으로 중심축 회전시킨다
}
else if(opt == 2) { // 사각형
a를 가로, b를 세로로 중심축 회전
}
}
▷ 사용자용 코드 (제공자용 코드(기능)이 제공되었으면 이 기능을 사용하는 사용자쪽 개발자도 있다)
(ver1)
void user() {
rotate(5);
}
ver2. 결합도가 높은 코드(제공된 쪽 소스코드가 바뀜에 의해 사용자 쪽 소스코드도 바뀌어야함)
void user(){
rotate(1, 5, 0);
}
※ 객체지향언어(JAVA, C++, C#)
c++은 c에서 발전된거라 절차지향언어, 객체지향언어 둘 다 섞여있음
ex) 원을 회전시킨다(ver1) + 사각형을 회전시킨다(ver up해서 기능 추가)
→ 객체지향언어개발자들은 기능을 담고있는 것(것=Thing*)인 원부터 먼저 완성하려고 함, 사각형부터 만드려고 한다.
*Object : Thing 물리적인 사물 + 추상적개념(ex)사원, 주문)
▷ 제공자용 코드
class Circle{
int radius;
void rotate() {
//radius를 반지름으로 중심축 기준으로 회전시킨다
}
}
ver2 기존꺼 수정이 아니라 새로운 class 추가함 = 결합도를 낮출 수 있다.
class Rectangle{
int width;
int height;
void rotate() {
// width를 가로, height를 세로 중심축 기준 회전시킨다
}
}
▷ 사용자용 코드
void user(){
Circle c = new Circle(); // 객체 생성, 변수에 담아둠
c.radius = 5;
c.rotate();
}
: 절차지향언어 개발 속도가 더 빠르다. 절차지향언어 제공자용 코드 = 간결, 깔끔
객체지향언어 개발 속도 더딤
※ 객체지향언어의 목적 : class의 재사용성을 높이자
※ 객체란?
Circle c = new Circle(); // 인스턴스화 = 객체를 만드는 작업
인스턴스화의 결과물이 객체(=인스턴스)
객체를 만드려면 class가 필요함,
클래스 = 객체를 만드는 틀/템플릿
※ 객체지향프로그램의 목적 : 클래스의 재사용성을 높이자
'언어 > Java' 카테고리의 다른 글
클래스 (0) | 2023.07.28 |
---|---|
이클립스 새 프로젝트 만들기 (0) | 2023.07.27 |
2차원 배열 예제 (0) | 2023.07.26 |
멤버변수와 지역변수 (0) | 2023.07.26 |
배열 예제 (0) | 2023.07.26 |