Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

God Of Java Seminar

Part I - Java Basic in 2 Hour
by

Sangmin Lee

on 29 August 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of God Of Java Seminar

"자바의 신" 탄생 배경
GodOfJava.com
Today's Agenda
"자바의 신" 탄생 배경

자바를 구성하는 기본 요소들

세금 안내는 상속

클래스의 친구들
자바를 구성하는 기본 요소들
Method
클래스의 친구들
Interface
세금 안내는 상속
Object
Part I - Java Basic in 2 Hour
God Of Java Seminar
그냥 어느날 새벽에 일어나
도메인이 사고 싶었을 뿐이고...
CoreJava.com 으로 사고 싶었으나, 이미 누군가 사용하고 있었고...
갑자기 God Of War 라는 게임이 생각나 혹시나 하는 생각에 godofjava.com도메인을 검색
앗~~ 비어있다. !!!
바로 구매 !!!
해법 자바?
원래 제목은 "해법 자바"
하지만 "해법"이라는 이름은
상표권 문제가 있었고
(출간 2개월 전에 인지 T T)
법적으로 확인하는 데에만
적어도 1년
그냥 도메인 구매한대로
"자바의 신"으로 가 보자~~
목욕의 신
어느날 팀장님이...
난 자꾸 자바의 신이라고 하면
목욕의 신이 생각나~~
한번 추진해 볼까 하는 생각으로
무작정 작가님의 블로그 검색
==> 이메일 검출 !!!
비굴 모드로 메일 작성~~
N사에 연재할 때 근무했다는
사실이 도움이 되어 OK 받음
물론 공짜는 아니고...
이건 장선우라는
훌륭한 디자이너 분의
도움으로...
왜 두 권일까?
책이 가장 잘 팔리는 시기는
로드북이라는 출판사가
1인 출판사라
성능이 안나오다보니...
신학기인 3월 !
이 때에는 책이 나와야 하는데...
자바 기초만 알면 되는 분들(PM, QA,...) : Vol.1
자바가 버전이 올라가면서 달라진점이 궁금한 선배 개발자 : Vol. 2
자바로 밥 먹고 살 분들 : Vol.1+Vol.2
전체가 1200 페이지에 달하고...
두 권으로 가자 !!!
이 효과는 하나도
못봤음 T T
Class
Variable
Package
Method ?
y = f(x)
x = 입력값 = 매개변수(Parameter)
y = 결과값= 리턴 값(return value)
Method !
int add(int num1, int num2) {
int result=num1 + num2;
return result;
}
매개변수(Parameter)
리턴 값
메소드는
뭔가 작업을 하기 위해서 만드는 것이고

매개변수 개수는 제한이 없고,
"타입 변수명" 순으로 지정

리턴 타입은 단 하나.
리턴값이 필요 없으면 void 로 선언 !

메소드 하나가 100 line을 넘어가면 선배한테 혼날 수도 ...
Class ?
변수와 메소드를 어딘가에 담아 놔야 할꺼 아냐~~~
모든 변수와 메소드는 클래스 안에 들어간다. 이럴 수가 !!!
행위와 속성을 포함하는 가장 작은 단위 !
행위는 메소드
속성은 변수
라고 생각하는게 속 편함 !
Class
public class Car {
int carSpeed;

public int increaseSpeed(int speed) {
// 내용 생략
}
public int decreaseSpeed(int speed) {
// 내용 생략
}
}
클래스는
행위와 속성을 가진 가장 작은 단위

Car.java 라는 클래스 이름과 같은 텍스트 파일을 만들어 컴파일이라는 것을 하면, Car.class 라는 클래스 파일이 만들어짐.

public static void main(String args[]) {} 으로 선언된 메소드가 있으면 실행도 된다 !!!

컴파일은 javac Car.java

실행은 java Car
Variable ?
public class Car {
int carSpeed;

public int increaseSpeed(int speed) {
// 내용 생략
}
public int decreaseSpeed(int speed) {
// 내용 생략
}
}
Variable !
Variable == 변수 (변하는 수가 아님 !!!)

int sum = 1 + 2; // 1와 2를 더한 결과를 sum에 넣는다.

할당할 변수를 왼쪽에, 계산은 오른쪽에

int speed = car.increaseSpeed(10); // 메소드 호출 결과도 이렇게 할당 가능
object
object ?
public void makeObjects() {
Car dogCar=new Car();
Car cowCar=new Car();
}
dogCar나 cowCar는 모두 Car의 객체(object)

dogCar 와 cowCar는 다른 애들

dogCar 와 cowCar는 어쨌든 Car
Package ?
package com.godofjava.car;
패키지는 같은 역할을 하는 선수들끼리 묶는 것 !

Package 선언은 자바 코드의 가장 첫줄에 ...

이름은 선배들이 지어주지만, 도메인의 역순

패키지와 동일한 디렉터리에 넣어야 마음이 편함
차별성
다른 기본서와 뭐가 다를까?
일단 두권
AWT, Swing 이 없어요.
왜냐하면 대부분의 분들은
AWT, Swing 으로 개발할일 없어요.
대신 JSP, Servlet, JDBC 맛보기가 ~~
그리고, 앞으로 무엇을 왜
공부해야하는지도 나와 있지요.
가격은 저도 살짝 걱정.
(근데 토비의 스프링은 가격이 ...)
Kind of Variables
public class VariableTypes {
int instanceVariable;

static
int classVariable;

public void method(int parameter) {
int localVariable;
}
}
제대로 이해 했나요?
public class VariableTypes {
int instanceVariable;
static int classVariable;
public void method(int parameter) {
int localVariable;
}
public void anotherMethod() {
int localVariable;
}
public void anotherMethod2() {
if (true) {
int localVariable;
}
if (true) {
int localVariable;
}
}
}
variable !!!
final 이 붙은 변수는 바꿀수 없어요.

class 변수 마음대로 남발하다가 맞을 수도 있어요.

변수 이름도 i,j,k 이렇게 붙이면 개발 앞으로 안시킬 수도 있어요.

juminBunho 이렇게 막 붙이다가 고과 바닥 깔 수도 있어요.
변수는 중괄호를 잘 봐야 함 !!!
final method
더 이상 Overriding 이 불가

Overriding ?
static method
static한 메소드 ?
객체를 생성하지 않고,
Car.setColor(color);
처럼
클래스.메소드();
로 호출 가능
장점 : 객체를 안만들어도 호출할 수 있음.

단점 : 메소드 내에서 인스턴스 변수 사용 불가
내가 마음대로
부모 클래스의
메소드 기능 수정 불가
그렇다면 final class는 ?
내가 마음대로
확장 불가
Overriding

?

확장 ?
GodOfJava.com을 샀었지 ?
Question ?
god@godofjava.com
extends
Object class
객체를 의미하는 object를 이야기하는 것이 아님

모~~~든 클래스의 부모 클래스

확장 안하려고 해도, 확장 안해도 자동으로...
extends
public class Accent
extends

Car
{}

public class BMW
extends

Car
{}
extends
는 확장 ! (보통 다 상속이라고 하죠)

Car
의 기본 기능은 수행하고, 옵션이 달라지는 것

자동차 옵션 추가와 비슷한 개념( !! ?)

부모의 변수, 메소드 대부분 사용가능(private 빼고)
Overriding
public String toString() {}
이 메소드는 무조건 Overriding (Object클래스에 선언)

부모 클래스에 선언되어 있는 메소드를 자식 클래스에서 임의로 구현한 것이 바로 Overriding !!!

Overriding은 말탄다고 생각하면 되어요.
Constructor
Constructor
Constructor == 생성자

메소드처럼 생겼으나 이름이 "클래스 이름과 동일"한 것

리턴 타입이 없는 것 (리턴 타입은 그 클래스의 객체 !!)

new 를 앞에 붙이고 이 생성자를 써 주면 해당
"클래스의 객체"
가 만들어 지는 것

만들지 않아도 매개변수 없는 것은 컴파일러가 자동으로 만들어 주는 것
public class Car {
public Car() {
}
}
Overriding?
상속 ?
당부 사항
제가 농담을 하면 웃어 주세요. ㅎㅎ
오늘 이야기하는 내용은 전부
자바의 신 Volume 1에 있습니다.
자바의 신 Volume 1에 있는 모든 내용을
오늘 말씀드릴 수는 없습니다.
호응이 좋은 분께는
"로드북" 협찬 +
"프로그래머로 산다는 것"
을 드립니다.
(자바의 신은 안드려요.)
자바의 신은 ... 사~ 주세요~~
About me
super
super
super 는 자식 클래스에서 부모와 관련된 항목을 참조하기 위해서 사용

super : 부모 클래스를 의미

super() : 부모 클래스의 기본 생성자
abstract class
enum
Nested class
interface?
public
interface
InterfaceA {
public void methodA();
public void methodB();
}
껍데기만 있는 것

메소드 내용은 아무것도 없는 것

구현할 때에는 extends가 아니라 implements 사용

구현시에 선언된 모든 메소드를 구현해야~~
abstract class
메소드의 일부만 구현된 클래스

이 클래스 확장시에는 extends 사용

확장할 때에는 반드시 abstract 로 선언된 메소드 구현 해야 ~~
public
abstract
class
AbstractClass
{
public
abstract
void methodC();
public void methodD() {
//...
}
}
enum ?
public
enum
EnumClass {
THREE_HOUR(18000),
FIVE_HOUR(30000);
/* 중간 생략 */
}
enum은 열거형

확장 같은것 안돼~

부모는 무조건 java.lang.Enum 클래스

메소드를 통한 기능 추가 가능

enum 사용 예 : http://javarevisited.blogspot.kr/2011/08/enum-in-java-example-tutorial.html
Nested class
클래스 안에 클래스가 ~ (이럴 수가 !!!)

만약 이것에 대해서 상세히 다루고 이해하려면 오늘 12시에 집에 들어갈듯 (9시에 끝내야하니 자세한 것은 책 참조 ~~)
public class OuterOfStatic {
static class StaticNested {}
class Inner {}
public void setButtonListener() {
EventListener listener=new EventListener()
{
public void onClick() {
System.out.println("Magic Button Clicked ");
}
};
}
}
interface는 왜 만들까?
일종의 규약 ! (List, Map, Queue)

분석 설계 단계의 산출물

의존성 제거 (DAO)

서로 다른 개체의 "접점"
class VS interface VS abstract class
this ?
담배 아님

해당 객체를 가리킴.

인스턴스 변수와 매개변수가 혼동될 때 많이 사용

Tip) 이클립스에서 동일 클래스의 변수/메소드 검색하기 귀찮으면, this. 를 찍으면 됨. 그 클래스에 선언된 변수/메소드 목록을 볼 수 있음
그 외에도 매우 많은 깨알 같은 재미가...
저를 알고 있는 분들은 제 책을 읽으면, 제가 귀에다 대고 읽어주는 듯한 착각이 든대요. ㅎㅎ
혹~~시나 해서
설마 컴파일 못하시는 분은 안계시겠지요?
(못해도 오늘 세미나와 큰 상관은 없습니다.)
오늘 제가 알고 있는 모든 것을 배울 수 있다고 생각하시는 것은 아니겠지요?
오늘은 개념만 배워요.
개념을 잡고 그 다음에,
자바의 신을 읽으시면 도움이 될 것 입니다.
저자에게
"책 한권 혹은 몇권
공짜로 달라는 것은 아니지"
라고,
많은 분들이 그러시더라구요.
삼성 SDS
NHN
SK planet
용도에 따라 상황에 따라
리턴 타입
다음에는...
아직 확정된 것은 없어요.

Volume 1 의 내용중에서 오늘 이야기 못한 부분을...

빨라도 6월달에 할 듯 해요.

녹화중이라...
광고
Full transcript