전체 글

객체 자신을 가리키는 this
this가 하는 일 인스턴스 자신의 메모리를 가리킴 생성자에서 또 다른 생성자를 호출 할때 사용 자신의 주소(참조값)을 반환 함 생성된 인스턴스 메모리의 주소를 가짐 생성자에서 다른 생성자를 호출 하는 this 클래스에 생성자가 여러 개 인경우, this를 이용하여 생성자에서 다른 생성자를 호출할 수 있음 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 쓸 수 없음 public class Person { String name; int age; public Person() { this("이름없음", 1); } public Person(String name, int age) { this.name = name; ..
캡슐화 (encapsulation)
정보 은닉을 활용한 캡슐화 꼭 필요한 정보와 기능만 외부에 오픈함 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현 하게 함 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화 한다.
정보은닉(infomation hiding)
private으로 제어한 멤버 변수도 public 메서드가 제공되면 접근 가능하지만 변수가 public으로 공개되었을 때보다 private 일때 각 변수에 대한 제한을 public 메서드에서 제어 할 수 있다. public void setMonth(int month) { if ( month 12) { isValid = false; } else { this.month = month; } } 객체 지향 프로그램에서 정보 은닉은 필요한 외부에서 접근 가능한 최소한의 정보를 오픈함으로써 객체의 오류를 방지하 클라이언트 객체가 더 효율적으로 객체를 활용할 수 있도록 해준다.
접근 제어 지시자(access modifier)
접근 제어 지시자 (accesss modifier) 클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드 private : 같은 클래스 내부에서만 접근 가능 ( 외부 클래스, 상속 관계의 클래스에서도 접근 불가) 아무것도 없음 (default) : 같은 패키지 내부에서만 접근 가능 ( 상속 관계라도 패키지가 다르면 접근 불가) protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근 할 수 없음 public : 클래스의 외부 어디서나 접근 할 수 있음 get()/ set() 메서드 private 으로 선언된 멤버 변수 (필드)에 대해 접근, 수정할 수 있는 메서드를 public으로 제공 get() 메서드만 제공 되는 경우 r..

참조 자료형 변수
참조 자료형 변수 참조 자료형 변수의 자료형 클래스형으로 변수를 선언 기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다름 참조 자료형을 사용 할때는 해당 변수에 대해 생성하여야 함 (String 클래스는 예외적으로 생성하지 않고 사용할 수 있음) 참조 자료형 정의하여 사용하기 학생이 수강한 과목들에 대한 성적을 산출하기 위한 경우 학생 클래스 속성에 과목이 모두 있으면 불합리 학생(Student)과 과목(Subject)에 대한 클래스를 분리하여 사용하고 Subject 클래스를 활용하여 수강한 과목들의 변수의 타입으로 선언 선언된 Subject 변수는 생성된 인스턴스가 아니므로, Student의 생성자에서 생성하여 사용
오버로딩 (overloading)
생성자 정의 하기 생성자를 구현해서 사용할 수 있음 클래스에 생성자를 따로 구현하면 기본 생성자 (default constructor)는 제공되지 않음 생성자를 호출하는 코드(client 코드)에서 여러 생성자 중 필요에 따라 호출해서 사용할 수 있음 UserInfo.java public class UserInfo { public String userId; public String userPassWord; public String userName; public String userAddress; public String phoneNumber; public UserInfo(){} public UserInfo(String userId, String userPassWord, String userName) { ..

인스턴스 생성과 힙 메모리 (heap memory)
인스턴스 (instance) -클래스는 객체의 속성을 정의 하고, 기능을 구현하여 만들어 놓은 코드 상태 -실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨 -가령, 학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년등의 값을 가지게 됨 -new 키워드를 사용하여 인스턴스 생성 힙 메모리 -생성된 인스턴스는 동적 메모리(heap memory) 에 할당됨 -C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 함 ( free() 난 delete 이용) -자바에서 Gabage Collector 가 주기 적으로 사용하지 않늠 메모리를 수거 -하나의 클래스로 부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨 용어 정리 객..

함수와 메서드
함수란 (function) -하나의 기능을 수행하는 일련의 코드 -구현된(정의된) 함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨 -함수로 구현된 하나의 기능은 여러 곳에서 동일한 방식으로 호출되어 사용될 수 있음 함수 정의하기 함수는 이름, 매개 변수, 반환 값, 함수 몸체(body)로 구성됨 int add(int num1, int num2) { int result; result = num1 + num2; return result; } 함수 호출과 스택 메모리 -스택 : 함수가 호출될 때 지역 변수들이 사용하는 메모리 -함수의 수행이 끝나면 자동으로 반환 되는 메모리 메서드 (method) -객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수 -멤버 함수 (member func..
자바 생활속에서 객체 찾아 클래스로 구현해보기
객체를 찾아 봅시다 온라인 쇼핑몰에 회원 로그인을 하고 여러 판매자가 판매하고 있는 제품 중 하나를 골라 주문을 한다 아침에 회사에 가는 길에 커피숍에 들려 아이스 카페라떼를 주문했다 성적확인을 위해 학사 관리 시스템에 로그인 하여 수강 한 과목들의 성적을 확인했다 클래스는 객체의 청사진(blueprint) 이다. 객체의 속성은 클래스의 멤머 변수(member variable)로 선언 함 학생 클래스 public class Student { int studentNumber; String studentName; int majorCode; String majorName; int grade; } 주문 클래스 public class Order { int orderId; String buyerId; String ..

객체 객체 지향 프로그래밍
객체와 객체 지향 프로그래밍 객체 (Object) 의사나 행위가 미치는 대상 ( 사전적 의미 ) 구체적, 추상적 데이터의 단위 ( 학생, 회원, 생산, 주문, 배송 ) 객체 지향 프로그램과 절차 지향 프로그래밍 아침에 일어나 학교를 가는 과정이라면, 절차 지향 프로그래밍 -시간이나 사건의 흐름에 따른 프로그래밍 일어난다 -> 씻는다 -> 밥을 먹는다 -> 버스를 탄다-> 요금을 지불한다 -> 학교에 도착 객체 지향 프로그래밍 -객체들의 속성과 가능한 상호 작용에 따른 프로그래밍 객체 지향 프로그램은 어떻게 구현할까? 1. 객체를 정의 하고 2. 각 객체 제공하는 기능들을 구현하고 3. 각 객체가 제공하는 기능들 간의 소통(메세지 전달)을 통하여 객체간의 협력을 구현함.
break, continue문
중간에 멈추는 break문, 무시하고 계속 진행하는 continue문 break문 -감싸고 있는 제어문의 블록을 빠져 나오는 기능 (switch문 에서도 사용) -반복문에서는 주로 조건문(if)와 같이 사용하여 조건에 해당되는 경우 반복 수행을 멈추고 반복문 외부로 수행이 이동 -여러 반복문이 중첩되어 있는 경우엔 break 문이 포함되어 있는 반복문만 빠져 나옴 ex) 1부터 숫자를 더하여 100이 넘는 순간의 그 숫자와 합을 출력하는 프로그램 public class BreakTest { public static void main(String[] args) { int sum = 0; int num; for( num = 1; ; num++) { sum += num; if( sum >= 100)break;..