Introduction & class definition
class는 object-oriented programming(객체지향프로그래밍)의 가장 중요한 특성이다.
Java programming은 class로 구성되어있다.
-모든 program은 class
-모든 helping software 는 class로 구성
-사용자가 정의한 type도 모두 class
Class Definition
ex)기존에 사용하던 String, Scanner 모두 class이다.
A Class Is a Type(중요)
class type의 값을 object 혹은 class의 instance라고 한다.
A라는 class가 있을 때,
-bla is of type A
-bla is an object of the class A
-bla is an instance of the class
라고 표현 가능하다.
class는 객체 혹은 메서드가 포함할 수 있는 data type을 결정한다.
The Contents of a Class Definition
class의 정의는 data items와 methods 를 구체화한다.
-Data items : fields, instance variables 라고 한다.
-Methods : 객체가 행할 수 있는 action
data items, methods는 객체의 member라고 한다.
The new Operator
class의 객체는 class type의 변수로 선언된다
-> ClassName classVar;
new operator는 객체를 생성하고 변수명과 연관지어 주기 위해 반드시 사용된다.
-> classVar = new ClassName();
합쳐서 간편하게 사용
-> ClassName classVar = new ClassName();
Instance Variable and Methods
Instance Variable은 다음과 같이 정의된다.
public String instanceVar1;
public int instanceVar2;
instancevariable 참조를 위해 다음과 같이 사용한다.
objectName.instanceVar1
objectName.instanceVae2
Method 정의는 heading ,body 두 부분으로 구분된다.
method는 실행 객체와 메서드 명을 사용하면 호출할 수 있다.
ex) classVar.myMethod();
More About Methods
methods에는 두 가지 종류가 있다.
-계산을 수행하고 값을 반환하는 methods ->heading 부분에 값의 type을 명시해줘야 한다.
-action을 수행하는 methods( return value가 없고 void method라고 한다.) -> heading 부분에 void 사용
main은 void Method
main은 void methods로 값을 반환하지 않는다.
heading 부분을 다음과 같이 작성
local variables,blocks,parameters
Local Variables
method와 함께 선언된 변수를 local variable이라고 한다.
-> main 함수 변수는 모두 local 변수
-> 모든 method의 parameters는 local 변수
두 개의 methods가 각각의 같은 이름의 local 변수를 가져도 두개는 다른 변수라고 본다.
Global Variables
Java는 global 변수를 사용하지 않는다. (C, C++ 에서 사용)
Blocks
braces ( { } ) 로 구분된 compound statement를 block이라고 한다.
block 내에 선언된 local 변수는 해당 block에서 local이다. 하지만 해당 block 밖에서는 사용 할 수 없다.
Parameters of a Primitive Type
인자의 개수와 순서는 parameter list와 일치해야 한다.
각 인자의 type은 대응하는 parameter 와 호환 가능해야한다. (int, double은 서로 호환이 가능)
ex)
this Parameter
모든 instance variables 앞에는 <the calling object>. 을 사용한다.
calling object의 정확한 이름 대신 this를 사용할 수 있다.
ex) myInstanceVariable -> this.myInstanceVariable
this 는 parameter, local variables 가 method에서 같은 이름으로 사용될 때 반드시 사용해야한다.
this 사용을 하지 않으면 instance가 local 로 해석된다.
The methods equals and toString
equals 는 두 객체의 내용을 비교하기 위한 method이며 boolean type이다. (내용 비교를 위해 "==" 사용 x)
toString은 객체의 data의 String 값을 반환하는 method이다.
Information Hiding & Encapsulation
Information Hiding
객체의 내부 상태나 구현 세부사항을 외부에서 접근하지 못하도록 숨기는 것을 의미
Encapsulation
Information Hiding을 구현하는 방법 중 하나로 클래스 내부의 필드와 메소드를 캡슐화하여, 외부에서 직접적인 접근을 제한하고 클래스 내부의 메소드를 통해 필드의 값을 조작하도록 한다.
Java에서 Encapsulation을 구현하기 위해, 필드를 private으로 선언하고, public으로 선언된 메소드(getter, setter)를 통해 외부에서 필드에 접근할 수 있도록 하는 방식을 사용
-> 객체를 안정적으로 유지하기 위함!
API and ADT
API(Application Programming Interface)
프로그래밍에서 사용되는 인터페이스를 의미
즉, 프로그래머가 다른 프로그램, 라이브러리 또는 운영 체제와 상호 작용하기 위해 사용하는 일련의 규칙, 규약, 명령어 등을 제공
일반적으로, API는 소프트웨어의 기능을 사용할 수 있는 방법을 제공하며, 개발자가 필요한 기능을 호출하여 사용할 수 있음
ADT(Abstract Data Type)
데이터를 추상화한 개념입니다.
ADT는 데이터와 해당 데이터를 다루는 연산을 정의한 추상적인 개념으로, 구체적인 구현 방법에 대한 정보를 숨김.
ADT는 일반적으로 클래스나 인터페이스로 구현되며, 구현 방법은 사용자에게 숨겨져 있으므로, 인터페이스를 통해 추상화된 개념만 사용할 수 있음
public and private Modifiers
public -> instance 변수나 methods가 어디에서나 사용 될 수 있음
private -> instance 변수나 methods 가 class 외부에서 사용될 수 없음
모든 instance 변수를 private 으로 정의하는 것이 좋음
대부분의 methods는 public으로 정의되며 객체에게 접근 권한이 부여됨
class 내부에서 다른 methods 를 돕기 위한 method에 private으로 정의함
Accessor and Mutator Methods
Accessor Methods 는 개발자에게 객체의 instance variable 값을 얻을 수 있게 해줌
- data는 접근 가능하나 수정은 불가하다.
-accessor methods는 주로 get이라는 단어로 시작함
Mutator methods는 개발자에게 객체의 instance variable 값을 수정할 수 있께 해줌
-incoming data는 tested/filtered 된 data
-mutator methods 는 주로 set 이라는 단어로 시작
A Class Has Access to Private Members of All Objects of the Class
인자에 class type을 선언하는 경우에 private member에 접근이 가능하다.
Oveloading
2개이상의 methods가 같은 class에서 같은 method 이름을 갖는 경우이다.
ex)
overloading이 가능하려면 다른 signatures를 가져야 한다. (인자의 개수 or 인자의 type이 달라야 함)
Overloading and Automatic Type Conversion
overloading이 일어나 signature를 찾지 못하는 경우 automastic type conversion이 일어나 프로그램이 정상 작동하지 않을수도 있음overloading 에서 return type은 signature 가 아니므로 사용할 수 없다.
Constructors(생성자)
constructor는 instance 변수를 초기화 하기 위한 특별한 method 이다.
public ClassName(anyParameters){code}
-생성자는 class명과 동일한 이름을 사용
-생성자는 return type이 없으며 void 도 아니다.
-생성자는 overloaded 된다.
생성자는 new 를 사용하여 새로운 class 객체를 생성할 때 호출된다.
생성자에 의해 처음 action은 instance 변수로 객체를 생성하는 것이다.
생성자의 정의에 따라 다른 method를 이후에 불러일으키는 것이 가능하다.
Include a No -Argument Constructor
class에 생성자를 포함하지 않으면 자동적으로 default, no-argument constructor를 생성한다.
이것은 인자를 갖지 않고 초기화 진행을 하지 않지만 객체만 생성하는 것이다.
Default Variable Initializations
Instance 변수는 자동적으로 초기화 된다.
-boolean type은 false로 초기화
-primitive types는 0으로 초기화
-class type은 nul값으로 초기화
*local 변수는 자동으로 초기화 되지 않는다.
예시를 통한 확인
'Development > OOP(Java)' 카테고리의 다른 글
Ch6. Defining Classes(3) (0) | 2023.04.10 |
---|---|
Project1 (Timetable application) (0) | 2023.04.05 |
Ch3. Flow of Control (0) | 2023.04.04 |
Ch5. Defining Classes(2) (0) | 2023.04.03 |
Ch2. Console Input and Output (0) | 2023.04.01 |