본문 바로가기

언어99

객체 간의 협력 (collabration) 객체 지향 프로그램밍에서의 협력 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함 매개 변수로 객체가 전달되는 경우가 발생 버스와 지하철을 타는 예제 프로그래밍 A 와 B는 각각 버스와 지하철을 타고 학교에 갑니다. A는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다 B는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다 package ch13; public class Bus { int busNumber; int passengerCount; int money; public Bus(int busNumber) { this.busNumber = busNumber; } publi.. 2021. 4. 14.
객체 자신을 가리키는 this this가 하는 일 인스턴스 자신의 메모리를 가리킴 생성자에서 또 다른 생성자를 호출 할 때 사용 자신의 주소(참조 값)을 반환 함 생성된 인스턴스 메모리의 주소를 가짐 생성자에서 다른 생성자를 호출 하는 this 클래스에 생성자가 여러개 인 경우, this를 이용하여 생성자에게 다른 생성자를 호출할 수 있음 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 쓸 수 없음 package ch12; public class Person { String name; int age; public Person() { this("no name", 1); } public Person(String name, int age) {.. 2021. 4. 14.
캡슐화 정보 은닉을 활용한 캡슐화 꼭 필요한 정보와 기능만 외부에 오픈함 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현하게 함 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화 한다. 어떤 정보를 공개하고 숨길지 정하는 것이 중요함 Getter / Setter Method 외부에서 내부 속성(Vaiable)에 직접 접근하는 것이 아닌 Getter/Setter Method를 통해서 접근하도록 적용 CRUD Method 데이터 처리를 위한 기본적인 CRUD Method를 제공 Business Logic Method 비즈니스 로직 처리를 위한 Method를 제공 객체의 생명 주기 처리 Method 흔히 destory(), disconnect() 등 qui.. 2021. 4. 14.
접근 제어 지시자, get() / set() 메서드, 정보은닉 접근 제어 지시자 클래스 외부에서 클래스의 멤버 변수, 메서드 생성자를 사용할 수 있는지 여부를 지정하는 키워드 private: 같은 클래스 내부에서만 접근 가능 (외부 클래스, 상속 관계의 클래스에서도 접근 불가) 아무것도 없음 : 같은 패키지 내부에서만 접근 가능 (상속 관계라도 패키지가 다르면 접근 불가) protected: 같은 패키지나 상속 관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근 할 수 없음 public: 클래스의 외부 어디서나 접근 할 수 있음 get() / set() 메서드 private 으로 선언된 멤버 변수(필드)에 대해 접근, 수정할 수 있는 메서드를 public으로 제공 get() 메서드만 제공 되는 경우 read-only 필드 이클립스에서 자동으로 생성됨 정보 은닉 .. 2021. 4. 13.
생성자 오버로딩 생성자를 구현해서 사용할 수 있음 클래스에 생성자를 따로 구현하면 기본 생성자는 제공되지 않음 생성자를 호출하는 코드에서 여러 생성자 중 필요에 따라 호출해서 사용할 수 있음 예제 Student.java package ch09; public class Student { int studentId; String studentName; Subject korea; Subject math; Student(int studentId, String studentName){ this.studentId = studentId; this.studentName = studentName; korea = new Subject(); math = new Subject(); } public void setKoreaSubject(Stri.. 2021. 4. 13.
생성자 생성자 객체를 생성할 때 new 키워드와 함께 사용 - new Student(); 생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체를 생성하기 위해 new 와 함께 호출 됨 객체가 생성될 때 변수나 상수를 초기화 하거나 다른 초기화 기능을 수행하는 메서드를 호출 함 생성자는 반환 값이 없고, 클래스의 이름과 동일 대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private으로 선언되는 경우도 있음 기본 생성자 클래스에는 반드시 적어도 하나 이상의 생성자가 존재 클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있음 클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어 줌 public Student(){} 매개 변수가 없음, 구현부가 없음 생성자를 지.. 2021. 4. 12.