DataScience Lab. 박사과정 김희찬 2017-02-13 (월) Big Data Analytics Short Courses 자바와 객체 DataScience Lab. 박사과정 김희찬 2017-02-13 (월)
자바란 무엇인가 High Level 언어의 한 종류! 컴파일러가 그 번역을 도와줌 사람이 직접 코드를 보고 이해할 수 있음 01010111101이 아님 컴퓨터는 0, 1 밖에 모른다던데? 컴파일러가 그 번역을 도와줌 사람이 작성한 코드 -> 컴퓨터가 알아듣는 언어로 번역 주먹을 쥔다 -> 손가락 마디 근육을 이용하여 손가락을 접고, 손바닥 근육을 blahblah ‘주먹을 쥔다’의 절차를 미리 만들어 두고 같은 명령이 떨어지면 절차대로 행동함
자바란 무엇인가 객체지향 패러다임을 성공적으로 활용 객체 지향? 클래스? 객체?
클래스와 객체 객체지향 (Object-Oriented) 기법에서는 그럼 객체는? 기능 단위를 클래스라는 조각으로 나눔 클래스가 Actor (Dog…) 메소드(Method)가 행위 (run…) 멤버 변수(Variable)가 상태 (white…) 클래스는 서로 연결 관계를 가질 수 있음 동물 : 상위 클래스 개, 양 : 하위 클래스 그럼 객체는? 실제로 생성된 클래스를 가리킴 실존하는 개는 서로 다르지만, 객체는 다르지만 같은 개이다 클래스는 같음 클래스 만으로는 사용할 수 없음 -> 꼭 객체를 생성해야함
클래스와 객체 다른 예제로 클래스과 객체의 차이를 보자 자동차 클래스로 실존하는 여러 객체를 만들 수 있음 좀 더 세분하여 설정할 수도 있음 벤츠, BMW, 아우디를 자동차의 하위 클래스로 선언, 각 모델을 객체로 생성 클래스는 자동차 설계도 객체는 설계도를 이용하여 직접 생성한 자동차
환경 설정하기 설치할 것들 자바 개발 툴 설치 자바 개발 키트 (Java Development Kit) 에디터 (Eclipse) 자바 개발 툴 설치 구글에서 “java jdk” 검색 첫 번째 결과에 접속 JDK 다운로드
환경 설정하기 자바 개발 툴 설치 약관 동의 윈도우 x86 버전으로 다운로드 다운 받은 파일 실행 변경 없이 ‘다음’ 연타로 설치 진행 자바 정상 설치 확인 시작+R 버튼 ‘cmd’ 입력 후 엔터 ‘java –version’ 입력
환경 설정하기 에디터 설치 Eclipse.org 접속 -> 우상단 Download -> Download packages Eclipse installer 32bit 다운로드 기부 관련은 무시 실행 후 맨 위 IDE for java 클릭 별다른 변경 없이 Next로 진행
클래스가 가질 수 있는 것 앞서 이야기한 것과 같이… 멤버 변수 멤버 메소드 (함수) 클래스에서 저장하고 있어야할 것들 해당 클래스의 특징 등 멤버 메소드 (함수) 클래스가 수행할 수 있는 것
변수 수학에서의 변수 프로그래밍에서의 변수 지시대명사 ‘데이터를 담는 상자’를 가리키는 지시대명사 데이터를 담는 상자는 메모리의 일정 공간 a = 10 b = a a = 11 b의 값은?
변수 자바 코드에서의 변수 선언 이해하기 메모리에 정수가 들어갈 상자 생성 상자의 이름은 ‘integer’ 저장할 값은 10
변수 10 10 10 7 10 7 상자를 이용한 변수의 생성 및 값의 변경 이해 이때 j 값을 변경하면? 데이터를 복사 i는 그대로 10 i j 10 10 j i 7 10 7 j i
변수 변수의 종류(타입) 변수의 크기 데이터를 저장하려면 적절한 형태로 메모리 공간을 확보해야함 이를 위하여 여러 형태의 변수가 존재 정수 / 실수 / 참,거짓 / 글자(문자열) 변수의 크기 컴퓨터는 0과 1뿐 -> bit 1byte = 8bit Int 정수는 4bytes 4 * 8 = 32bit 32자리 2진수로 표현
변수 테스트해보자 File -> new -> new java project ‘VariableTest’이란 이름으로 프로젝트 생성 src 폴더 우클릭 -> new -> class Test / public static void main 체크박스 체크 -> finish Main 메소드란? 해당 클래스를 자바로 실행할 때 처음 실행되는 함수 방아쇠 역할
변수 변수 별 크기 비교 상자 크기보다 큰 값을 넣는다면? 반대 경우는? 에러 발생! 문제 없이 저장 가능 강제로 넣는다면, 원하는 값으로 저장되지 않음 Int를 byte에 넣는다면 32 bit 중 뒤의 8bit만 저장되고 나머지는 유실됨 상자가 작으니까! 반대 경우는? 문제 없이 저장 가능
변수 형(type) 변환하기 묵시적 변환 명시적 변환 short char 작은 상자에서 큰 상자로는 자동으로 변환됨 (문제 없음) 명시적 변환 큰 상자에서 작은 상자로 변경 시 데이터가 유실됨 같은 크기여도 변수 종류가 다른 경우 본래의 데이터를 잃음 short -> char (2bytes) 왜냐하면 변수에 따라 메모리의 bit의 해석 방식이 다르기 때문 short char 1000001 1000001 65 ‘A’
연산자 산술 연산자 연산자도 우선순위가 존재함 사칙연산 + - * / Mod %
연산자 증감 연산자 변수 앞, 뒤로 다음 부호를 넣어서 연산 앞에 붙이면 다른 작업하기 전에 변수의 수를 변경 ++, -- 앞에 붙이면 다른 작업하기 전에 변수의 수를 변경 뒤에 붙이면 일단 작업하고 변수의 수를 변경
연산자 비교 연산자 같은지, 다른지 초과, 미만, 이상, 이하 ==, != 초과, 미만, 이상, 이하 >, <, >=, <= 비교 연산의 결과는 boolean(참 거짓/true false)임
연산자 논리 연산자 AND, OR &&, || 논리 연산의 결과는 boolean(참 거짓/true false)임
클래스와 객체 방금 테스트할 때 사용한 것도 클래스인가? 그러면 변수랑 메소드도 만들 수 있겠네? YES! Test라는 이름의 클래스 실행 시 시작할 부분 (main 메소드)
클래스와 객체 멤버 변수는 어떻게 생겼나? 일반 변수랑 똑같이 생겼으나 그 위치가 조금 다름 클래스 내의 모든 메소드에서 해당 변수를 이용할 수 있음
클래스와 객체 메소드는 어떻게 생겼나? 공개 범위 / 리턴 데이터 형태 / 메소드 이름 / 입력 파라미터 리턴 형태는 메소드 수행 결과를 외부로 반출할 형태와 같음 리턴하는 데이터가 없는 경우도 존재 (void)
클래스와 객체 반복되는 계산이나 절차는 메소드로 만드는 것이 좋음
클래스와 객체 public, static이 뭐에요? [공개 범위] public은 접근 권한을 나타냄 private으로 설정하면 외부에서 접근이 안됨 static은 클래스에서 유일하다는 것을 나타냄 같은 클래스의 여러 객체가 가능하나 이 객체들 사이에서 동일한 값을 유지하고 싶을 때 사용함 미니 쿠퍼 JCW라는 자동차(클래스)는 여러 대(객체)가 실존하지만 이름은 ‘미니 쿠퍼 JCW’로 같음 이때 이 이름이 static 변수임
객체 만들기 상품 클래스를 만들어보자! 필요한 변수 필요한 메소드 상품명 상품 가격 getter, setter print 클래스의 세부 정보를 맘대로 바꾸면 안되니까, 클래스가 정의된 대로만 변경하기 위한 방법 print 상품명과 가격을 출력하는 메소드 Product() 생성자라는 이름의 메소드로 리턴형이 없음 객체가 만들어질 때 수행하는 것 (일종의 main함수?) 보통 멤버 변수를 초기화하는데 사용함
객체 만들기 상품 객체를 만들어보자! 클래스를 이용해서 어떻게 만들지? new 명령어! 뒤에 메소드 처럼 괄호()는 생성자 메소드를 실행하는 것 생성 시 변수의 형태는 생성할 클래스와 같은 이름
THANKS