프로그래밍 언어는 일반적으로 절차지향적으로 설계되었었다.
메서드, 파라미터와 같은 것들이 생기기 시작한다.
# 함수 ? 메서드 ?
우리가 구현하는 기능 중 함수나 메서드는 내부적으로 연산하여 값을 반환하기도 하고 하지 않기도 한다.
값을 반환하면 function
값을 반환하지 않으면 procedure
우리가 쓰는 요즈음의 언어는 procedure를 찾아 보기 쉽지 않다.
'값을 반환하지 않는다'는 것은 'void'와 다르다.
엄연히 void는 반환 타입이 있는 것이고 그것이 void인 것이다.
함수, 메서드: 클래스 외부에 있으면 메서드, 내부에 있으면 함수 정도로 취급하기도 한다. 자바에서 다음은 함수 정도
public static int add(int x, int y) {
return x + y;
}
메서드: 특정 객체의 동작(behavier)을 설명하는 기능.
private int add(int x, int y) {
return x + y;
}
## 객체지향의 5가지 특성
- 클래스
- 캡슐화
- 추상화
- 상속
- 다형성
# 변수의 Scope
지역 변수(local variable)
- 선언 및 초기화 필요
- 메서드가 시작될 때 생성됨
- 메서드 내에서만 유효함
- 메서드가 종료될 때 제거됨
공유 변수(인스턴스 변수, 클래스 변수 등)
- 선언만 해도 무방
- 클래스 수준에서 선언된 변수는 공유될 수 있음
범위 충돌
- 지역 변수 이름과 클래스 이름이 같은 경우 컴파일러는 이를 경고하지 않음
# pass by value
- 값을 복사하기 때문에 원래의 값에는 영향 비재
- 자바에서는 swap 메서드 구현 불가
- 자바에서는 모두 pass by value로 동작
# pass by reference
- 값을 참조하기 때문에 변경 가능
# pass by ..
- ...
데이터가 정렬되어 있으면 탐색이 쉽다
# 메서드 오버로딩
같은 이름의 메서드를 여러 개 정의하는 것이다.
그러나 당연히 메서드 시그너처가 다르기 때문에 엄연히 다른 메서드이다.
System.out.println(); // 흔히 쓰는 메서드
잘 모르고 있을 수도 있지만 당연히 println 메서드도 오버로딩된 메서드인 것이다 ..!!
'CNU SW 아카데미 > 1주차' 카테고리의 다른 글
[컴퓨터 기초] 객체지향설계(Object-Oriented Programming) (1) | 2024.07.05 |
---|---|
[컴퓨터 기초] 배열 (0) | 2024.07.04 |
[컴퓨터 기초] Java의 값 타입 등 (1) | 2024.07.02 |
[컴퓨터 기초] (0) | 2024.07.01 |