2. 클래스 구성 요소

- 변수 기타 제한자 static(17)

클래스(static) 변수라고 한다.

C에서 전역변수 개념과 비슷하다.

인스턴스 변수는 각 객체마다 공유의 개념이 아니고 각각의 데이터이지만

클래스 변수는 어떠한 객체를 생성하든 공유된다.


-JVM 메모리 관리 모델

[         static영역          ][stack영역][                     haep영역                    ]


heap > static > stack 순으로 크다


1. 클래스를 선언하는순간 static영역 메모리에 로드가된다.

2. 변수가 스택영역에 할당된다.

3. new 하는순간 static에 선언된 클래스가 heap에 로드된다.


클래스 자체가 로드되는곳(클래스로더, static영역)

스텍 영역은 지역변수가 로드되는 영역이다.

힙 영역은 인스턴스가 할당되는 영역이다.


스택은 지역변수만 넣기때문에 작다.


클래스 변수는 static 영역에 로드된다.

기존의 인스턴스 변수는 heap영역에 로드된다.

heap영역에는 클래스변수가 로드되지 않는다. 오직 static 에만 로드된다.


할당될떄 "클래스이름.클래스변수" 로 할당된다.

다른 모든 인스턴스들과 공유되는 변수, 메소드 이다.



- math 클래스는 100% static 메소드로 되어있다.


- 상수 처리의 일반적인 구조

public final static int value = 10;

변수명은 대문자로 써준다. 일반적으로


- 패키지 생성 방법(시험문제)

javac -d . SomeClass.java

javac 디렉토리생성 명령어 좌표 파일명

패키지명은 소문자 클래스 명의 시작은 대문자로 쓴다. 구분하기 위해


- 서로 다른 package의 클래스를 사용하기 위해 import를 쓴다.

실제 패키지명은 패키지 + 클래스명 으로 구성된다.(컴파일러 단에서)


실행시 반드시 패키지명을 포함시켜야한다.


- 4. 메소드 오버로딩

동일한 이름으로 사용가능 <-- 장점

조건 : 매게변수의 개수나 데이터유형이 서로 달라야한다.

리턴타입은 오버로딩과 관계없다. 

오로지 매개변수 타입과 갯수에만 관계가있다.


- 5. 배열.ppt

동일한 타입이 다수 들어간것

배열 자체를 메소드로 취급한다.


배열을 하나의 클래스처럼 취급한다.


한방에 선언, 생성, 초기화할때

int[] array = new int[]{0,~~}

사이즈 크기를 주지않는다.


자바는 정방향 배열이 아니다.

참조의 참조 객체로 사용한다.

C와 내부적인 구조가 다르다.


2차원 배열을 for문으로 돌릴때

for (int i = 0; i < array3.length ; i++){

for (int j = 0; j < array3[i].length ; j++){


array3[i].lenght 은 [i]가 가지고있는 배열의 크기



------------------



자바 배열 퀴즈

순서가 엉망인 1~10까지 배열을 가지고

순서대로 만들기


버블정렬로 구현하기


메소드에 래퍼런스를 넘길경우 굳이 그 메소드에서

리턴으로 값울 다시 가져올필요가없다

왜냐하면 래퍼런스로 메소드나 호출하는 부분에서도 래퍼런스가 가리키는

데이터의 위치는 같기때문이다.


- 참조 데이터 타입을 배열로 처리할 수 있다.

5, 배열(3)






'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

7월 2주차 2일 (2주)  (0) 2015.07.14
7월 2주차 1일 (2주)  (0) 2015.07.14
7월 1주차 4일 (1주)  (0) 2015.07.09
7월 1주차 3일 (1주)  (0) 2015.07.08
7월 1주 2일차 (1주)  (0) 2015.07.07
Posted by moyaiori
,

- 클래스 만들기

기본 타입과 참조 데이터 타입의 비교


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
        // 기본타입 변수선언
        int a;
        a = 100;
        
        // 참조 데이터 타입 변수 선언 
        Payslip payslip;    // 4바이트 할당
        // 클래스로부터 인스턴스 생성(메모리 로드)
        payslip = new Payslip();
    //      1   3       2
    // 실행순서
    // 2번에서 하드디스크에서 클래스를 복사해온다.
    // 하지만 메모리가 더 크다.
    // 그래서 바로 복사해오지않고 주소를 넣어준다.(래퍼런스, 2번동작)
    // 1번에 2번의 주소값(래퍼런스)를 3번 동작으로 할당한다.
    // 래퍼런스 데이터타입의 값을 접근할때 "."으로 접근한다. (~~의)
 
//---------------------------------------------------------------
    // 인스턴스 변수 사용
    // 지역변수와 다르게 인스턴스 변수는 JVM에서 자동 할당(초기화)이된다.
    // 지역변수일 경우 초기화하지않고 사용할경우 컴파일 애러가 나온다.
cs


- 클래스 생성 및 구현

workspace -> OOP -> Payslip, PayslipApp, PayslipApp2


- 객체지향분석설계 해보기(acount class)

starUML툴을 활용하여

디자인모델 만들어보기 


- Account 클래스

디자인모델 설계부터 직접 코딩해보기까지


OOP -> Account, AccountExample


- 2. 클래스 구성요소.ppt


- 생성자(3)

객체 생성을 위한 창구(연결통로)

반환형자체가 없다.(void 조차 없다. 리턴타입을 명시하지 않는다.)

생성자 이름은 무조건 클래스이름과 동일해야한다.

생성자는 직접 호출할 수 없고 반드지 new 키워드와 함께 호출하여야 한다.

생성자를 작성하지않은 경우 컴파일러에서 디폴트 생성자가 자동 정의된다.

생성자를 만들때는 디폴트생성자와 인스턴스 변수 갯수와 매개변수가 같은 생성자를 만들어줘야한다.

디폴트 생성자는 어떤 생성자도 명시하지않았을때 컴파일러에서 생성한다.

목적 : 인스턴스 변수의 초기화


- 예약어 this(7)

현재 실행중인(생성되어 있는) 인스턴스를 참조하는데 사용한다.

생성된 래퍼런스 자신을 가르키는 주소값이 담겨있는 변수

매게변수로 인스턴스 변수와 이름이 같을경우 구분을 위하여 "this."를 붙여준다.

자기 자신의 또다른 생성자를 호출할때 사용한다. (this(변수1, 변수2, 변수3))

this는 생성자 안에서 생성자의 첫 줄에서 단 한번밖에 사용할 수 없다.


- 접근 제한자(11)

public은 다른 패키지의 어떤 클래스에서도 이 클래스를 접근(객체생성)을 할 수 있다.

클래스 -> public

속성(인스턴스변수) -> private

메소드 -> public


- getter, setter 생성

인스턴스 변수를 직접 접근하지 못하도록 만들어지기때문에

접근할수있는 방법을 메소드를 만들어야한다.


get, set을 만들어서 쓴다.

'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

7월 2주차 1일 (2주)  (0) 2015.07.14
7월 1주차 5일 (1주)  (0) 2015.07.10
7월 1주차 3일 (1주)  (0) 2015.07.08
7월 1주 2일차 (1주)  (0) 2015.07.07
7월 1주 1일차 (1주)  (0) 2015.07.06
Posted by moyaiori
,

자바 소개 및 기본 구문

32페이지부터


- 논리연산자 (39)

&&, || 연산자의 경우 shot-circuit이 발생한다.


2항을 논리 연산할경우 앞쪽에서 조건이 만족하면 뒤에 조건은 연산하지 않는다.

(로직이 짧게, 효율적으로 돌아간다)


- 삼항연산자 (40)

조건 ? 수식1 : 수식2;

true 일경우 수식 1 할당

fasle 일경우 수식 2 할당


- 연산자 우선순위 (41)

1순위 : ()

마지막 순위 : =


- switch문(48)

switch(정수식) <-- 정수식을 넣어야한다.

정수식엔 long을 제외한 byte, short, char, int만 들어갈수 있다. (1.5기준)

래퍼클래스, 문자열, ENUM 등이 1.7이후에 들어갈수있도록 추가되었다.


- for문(52)

변수 초기식을 여러개 선언하고 증감식도 여러개 선언할 수 있다.


모두 생략할 수 있다(무한반복)

for ( ; ; ){}


조건식을 제외한 변수초기식과 증감식을 생략할 수 있다.(while문과 동일)

for ( ; 조건식 ; ){}


- continue문

반복제어문 블록 내부에 위치하여 실행 흐름을 제어문 블록의 처음으로 이동시킨다.


- label (56)

C 언어의 go to 문 대용

label은 모두 대문자로 써주는게 관례

표지판 역할을 한다.

레이블이 붙어있는 블록의 바깥으로 이동한다.

블록 위에 써준다.


- 함수(메소드) 이해.ppt

자바스타일의 함수 구조


- 자바애러 : non-static method cannot be referenced from a static context

- 발생되는 경우

static 메소드 안에서 static 으로 선언되지 않은 메소드나 변수를 참조(사용)했을 경우.특히, 메소드의 경우는 인스턴스를 사용하지 않고 static메소드 내에서 바로 선언한 경우.


- 해결 방법

static 선언자의 사용여부를 살펴보고 static 메소드 안에 static으로 선언되어지지 않은 메소드나 변수가 있느지 확인해본다.만약 그런것이 있으면 메소드를 새로 만들어 그쪽에서 선언한다. 단, 인스턴스를 생성해서 불러줘야 한다는 것을 잊지 말아야한다.



- 수업중 과제

과제 1 : 별 5개를 5번찍기

과제 2 : 별 순차적으로 1~5개 찍기

과제 3 : 별 순차적으로 5~1개 찍기

과제 4 : 별 역순으로 찍기

과제 5 : 5개 부터 바깥쪽으로 별찍기

과제 6 : 정삼각형 5단



-- 자바 객체 지향 프로그래밍.ppt

객체 : 명사형의 모든 실체 및 개념, 변수들과 그와 관련된 메서드들이 모여서 이룬 하나의 꾸러미 이다.

OOB : 객체라는 독립된 단위로 구성하고, 이 객체들 간의 상호작용에 의해 실행되도록 하는 프로그램 기법, 객체가 중심이된다.

추상화 : 내가 클래스로 만들고 싶은걸 프로그램적으로 만드는걸 객체 추상화라고 한다. 객체지향프로그래밍의 4대요소의 1가지

클래스 : 일상생활의 객체를 표현하는 데이터 타입

절차지향과 객체지향의 가장큰 차이점 : 데이터와 메서드의 분리(절차)인가 통합(객체)인가


-객체 모델링(17)

모델 : 실체에 대한 정보를 제공하기 위해 이해하기 쉬운 형태로 표현한것


- 객체 모델링 언어 (19)

개발하고자하는 시스템을 시각적으로 모델링 하기 위한 언어

객체 다이어그램의 필수 3가지 : class, use-case, sequence


- 클래스 구조 (10) 시험문제~!

8개의 구성요소

맴버변수 - 인스턴스 변수

맴버변수 - 클래스 변수

상수

static 초기화 블록

생성자

맴버메소드 - 인스턴스 메소드

맴버메소드 - 클래스 메소드

내부클래스


---- 별찍기


5, 6단계 아직 못함

4단계

for (int i = 0; i < 5 ; i++){

for (int j = 3; i <= j; j--){

System.out.print(" ");

}

for (int j = 0; j <= i; j++){

System.out.print("*");

}

System.out.println();

}

5단계

*****

 ****

  ***

   **

    *

6단계

    *

   ***

  *****

 *******

*********






'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

7월 2주차 1일 (2주)  (0) 2015.07.14
7월 1주차 5일 (1주)  (0) 2015.07.10
7월 1주차 4일 (1주)  (0) 2015.07.09
7월 1주 2일차 (1주)  (0) 2015.07.07
7월 1주 1일차 (1주)  (0) 2015.07.06
Posted by moyaiori
,