블로그 이미지
DovewinG
사랑합니다~                   

calendar

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

Notice

'분류 전체보기'에 해당되는 글 47

  1. 2021.09.08 Hello World
  2. 2010.12.07 JAVA 인터페이스1
  3. 2010.12.03 ASP
  4. 2010.11.30 JAVA 추상 메소드
  5. 2010.11.26 ASP delete 구문 및 페이징기능
  6. 2010.11.23 JAVA 수업 6장 상속과 인터페이스
  7. 2010.11.16 자바 수업
  8. 2010.11.09 JAVA 수업
  9. 2010.11.05 웹프로그래밍2
  10. 2010.11.02 5장 2번째
2021. 9. 8. 19:10 카테고리 없음

대한양궁협회에서 일하고 있습니다.

 

posted by DovewinG
2010. 12. 7. 15:04 도브의 프로그래밍/Java

익셉션을 발생하는 추상 메소드

interface Lendable{

abstract void checkOut(String borrower, String date) throws Exception;
throw new Exception("대출불가"+bookTitle);

throws와 - 이 메소드를 불러 오는 애들은 반드시 try capture문을 지정해야한다.
메소드 시그네쳐에서 익셉션 발생한다는것을 선언 할때는 throws를 사용
throw new Exception - 실제 익셉션 객체를 만들어 발생 시킬때는 throw를 사용

변환 인터페이스
인터페이스 -> 클래스 상속 받을때는 interface implement
클래스 -> 클래스 상속은 extends
interface Transformable extends Movable { }

인터페이스 -> 인터페이스 상속은 interface extends

인터페이스가 클래스를 상속받을순 없다.
클래스 -> 인터페이스 상속 X


%가 붙으면"" 뒤에 나오는 실제값으로 대치가 된다.
System.out.printf("사각형: 위치(%d, %d) 크기(%d x %d) \n", obj.x, obj.y, obj.width, obj,height);
%d가 4개 "" 안에서는 폼을 나타내는 것이다. 값이 순차적으로 들어간다.

먼저 포맷을 정의 해 줄수 있다.
Rectangle 클래스 이용


클래스가 -> 여러개 인터페이스 다중 상속 가능
인터페이스가 -> 여러개 인터페이스 다중 상속 가능


두개의 인터페이스를 동시에 상속받는 외형변경 인터페이스

1 place maintenance

라벨클래스를 사용하는


레퍼런스 타입

프리미티브 타입(원시타입?, 기본 제공 데이터 타입)

레퍼런스 타입 - 사용자 정의 클래스타입, 자바 정의 클래스 타입(ex String, API 클래스)

레퍼런스 타입 - 열거타입, 배열타입, 인터페이스 타입, 클래스 타입
(클래스-> 객체 생성 하는 식을 생각하면 됨)

Point obj = new Point(10, 20); -> point 객체가 있는 주소값을 Point obj 변수함에 가리킨다.

@ 앳 주소 ex Point@c17164

obj2 = obj1; 레퍼런스 타입을 다른 레퍼런스 타입에 대입하면
하나의 객체를 두개의 변수가 가리키는 형태가 된다.

두개의 레퍼런스가 동일한 객체를 가리키기 때문에
의도치 않게 값을 모두 바꿔 버릴수 있다.


레퍼런스 타입 파라미터를 메소드 안에서 수정

*메소드 매개변수로 객체 타입을 넣어도 새 객체를 만들어 입력하는 것이 아니라
기존에 있는 객체(참조값이기때문에)의 값을 사용한다.

null 참조값 : 아무 데이터도 가리키지 않는 참조값
Point obj; 
Point obj2 = null; <- 아무 값도 없다는 초기화
이 상태에서 obj2.메소드 객체를 실행하면 null pointer 익셉션 발생

대치성,다형성
자식 클래스가 부모 클래스를 대치 할수 있다.

supuer( , , ,) 부모 클래스 초기화값을 가져온다.


서브타입
부모 클래스의 객체가 구동하는데 자식 클래스의 객체를 대신 써도 구동된다면 자식 클래스는 부모 클래스의 서브타입이다.

상속관계에서 하위개념에 있는 것이 상위개념의 서브타입이다.

obj2 = obj1;
이 성립하려면 obj1 = obj2 같은 타입이거나, obj1이 obj2의 서브타입이어야한다.

레퍼런스 타입에 캐스트 연산자를 사용하는 방법
obj2 = (CheckingAccount) obj1;
          캐스트 연산자

프리미티브 타입 - 캐스트 연산자 ->  테이터 타입이 바뀐다.
레퍼런스 타입 - 캐스트 연산자 -. 객체의 타입을 보증하는 역할만 한다. (내부 객체가 바뀌진 않는다.)

instanceof 연산자
이 객체가 어느 클래스에서 파생된 객체인지 알려준다.
(캐스트 연산 가능성을 검사 하는 연산자. 자바 키워드)
obj instanceof CheckingAccount
obj 객체가 CheckingAccount 클래스로부터 나온 객체인지 확인해준다.

열거 타입
한정된 수의 값을 표현할때 씀(상수형태)
ex) 월,화,수,목,금,토,일   ,봄,여름,가을,겨울

열거타입도 데이터 타입의 한 종류다

열거타입의 이름과
열거 타입에 속하는 값의 이름들을 정해야 한다.
인스턴스화 되어있다.
열거 타입 선언 키워드 = enum Season {SPRING, SUMMER, FAIL, WINTER} 콤마로 구분한 열거 값의 이름들

열거 타입의 변수
Season season;
열거타입 변수 사용
season = Season.SPRING;
스프링의 값이 시즌에 들어간다.

클래스 안에 클래스에 종속되어 열거 할수 있다.
클래스/인터페이스 안에 선언된 열거 타입은 그 클래스/인텊이스에 종속된다.
사용방법
seaspm = ClothingInfo.Season.SPRING;
     열거타입이 속하는 클래스, 열거 타입,

values 메소드 <- 모든 열거 상수를 리턴하는 메소드
valueOf 메소드 정적메소드(static) <- 주어진 문자열에 해당하는 열거 상수를 리턴
열거 상수


enum  필드, 생성자;
final private String name;

final private String name;
Season(String name) 파라미터를 위와같이 한다.



























posted by DovewinG
2010. 12. 3. 10:58 도브의 프로그래밍/ASP

ASP

sPage 묶음 페이지

sPage = 0
다음10개 sPage += 10

다음학기
정보시스템프로젝트 1

다음학기는 3타임으로 바뀐다.
한타임당 2:30

사회조사
유통관리사
정보처리기사

12월 9일까지 기말고사 텀페이퍼 진행
성적확인은 12월 15일까지


posted by DovewinG
2010. 11. 30. 15:45 도브의 프로그래밍/Java

추상 클래스를 상속 받으면
하위 클래스는 추상 클래스에 있는 메소드는 다 구현 해야한다.

객체 지향의 꽃
다형성 폴리모포즘
한가지의 형태가 여러가지에 쓰일수 있다.

ex)
TOP DOWN 방식
Account 클래스

CheckingAccount 클래스  CreditLineAccount클래스
상속을 통해 만들어진 클래스는 슈퍼 클래스와 비슷한 양상을 띕니다.

CheckingAccount 객체, Account 객체, CreditLineAccount 객체

슈퍼클래스 변수에는 서브클래스 객체를 대입할 수 있습니다.

Account 클래스 와 CheckingAccount 클래스의 객체와 연관이 있다. -> 다형성

Account acc = new Account()
acc라는 변수에 Account라는 데이터타입에 대입할수 있는 타입(구조)를 생성

Account acc = new CreditAccount()

CreditAccount()에 의해 생성된 객체가 acc에 들어간다.

Account (슈퍼클래스) CreditAccount(서브클래스)
서브 클래스는 슈퍼클래스의 구조를 모두 포함하고 있다.

서브 객체(다수의 데이터량 - 부모클래스 데이터+자신의 데이터) 를 부모의 레퍼런스 타입의 변수 acc에 넣는다?

큰 데이터를 -> 작은 틀에 넣는다.

int a = 3.2 -> a에는 3만 저장된다.   0.2는 버려짐

CreditAccount()의 객체를 acc에 집어 넣으면
부모 클래스에서 정의 해 놓은 속성과 메소드까지만 접근 가능

--------   
Account                
--------
account
balance
name
--------
withdraw()
deposite()
--------

상속받은
--------------
CreditAccount
--------------
credit
--------------
creditwithdraw()
---------------

Account obj;
obj = new Account("11","ggg",100);
obj new CheckingAccount(444","hhh", 30, "0000");

static void printAccountInfo(Account obj)
Account 객체의 obj의 매개변수로 받겠다.
다양한 타입의 객체를 한 타입의 파라미터 변수로 받는다.


printAccountInfo(obj2);

상속관계(inheritance) 클래스 -> is a 관계 (ISA)
SubClass is a SuperClass
CreditLine Class is an Account Class

서브클래스는 수퍼클래스의 기능(?)을 대신할 수 있지만
수퍼클래스는 서브클래스를 대신할 수 없다.

다형성과 메소드 오버라이딩


스태팃 바인딩 - 코드만 보고 어느 메소드를 호출할것인지 보인다.
컴파일할때 결정됨

late 바인딩, 다이나믹 바인딩

어느 객체가 들어가는지에 따라 바뀐다.

커뮤니케이션이 서로 다른 두 객체가 서로 커뮤니케이션 할수 있도록 해 주는 것이 인터페이스(일반적인 개념)

자바의 인터페이스

일반 클래스
abstract 클래스
인터페이스

자바에서는 클래스의 다중 상속을 허용하지 않는다.

다중상속 - 여러 부모클래스로부터 한 자식클래스가 상속받는다.
다중상속의 장점을 넣기 위해 나온것 - 인터페이스


인터페이스 - 추상 메소드처럼 메소드 시그네쳐(메소드이름,매개변수정보)만 구현한다.
ex) interface Lendable{
abstract void checkOut( String borrower, String date);
abstract void checkIn();
}
인터페이스의 특징
인터페이스 - 추상 메소드처럼 메소드 시그네쳐(메소드이름,매개변수정보)만 구현한다.
인터페이스는 객체 생성 불가
인터페이스에서 정의된 속성은 모두 static final 이 적용되어 상수화 된다.

인터페이스는 공통된 속성을 추출할수 없기때문에 기능(메소드)만 정의 한다.
클래스 상속 - extend
인터페이스로 공통 메소드로 추출할때
implements(구현함) 키워드 씀

메소드 이름은 동사형태로 이름을 만든다. 속성은 명사형태
인터페이스에서 메소드를 정의 할때 public 붙어야한다.
public은 메소드를 오픈하여 모든곳에서 쓸수 있게 한다.

extends 절과 implements 절이 모두 있는 클래스의 선언 방법
extends CDInfo (하나만 가능) implements Lendable, ddd, aaa (여러개 가능)

인터페이스를 가지고 할 수 있는 일
클래스의 선언 방법을 제한할 수 있다.
-> 클래스 안에서 구현해야할 메소드를 지정할수 있다.
인터페이스 변수 선언에 사용됨

Lendable obj;

인터페이스 자체는 객체를 생성할수 없지만
인터페이스 클래스를 상속한 클래스에서 객체를 만들어 인터페이스 클래스에 집어넣을순 있따.(다형성)










posted by DovewinG
2010. 11. 26. 18:57 도브의 프로그래밍/ASP

1~10까지의 글이 있다. 한페이지에 3개씩 보이기 -> 페이지 4개
현재 page, 전체 페이지, 전체 데이터수 구하기

전체 데이터수 - count 변수로 구함
w전체페이지 = count / 3 = 3.3
10 / 3
함수 중에 3.3 소숫점 뒷자리를 버리는 함수 사용
소숫점 뒤를 버린 후 정수에 +1을 해준다. = 필요한 페이지 수
다음 버튼 -> 현재page +1
이전 버튼 -> 현재page -1

if 10mod3 <> 0



posted by DovewinG
2010. 11. 23. 15:37 도브의 프로그래밍/Java

상속
코딩시간 단축, 에러 최소화

extends        클래스 이름
자바 키워드   상속할클래스 이름
기존에 있는 메소드를 이용하여 정의 한다.

String은 레퍼런스타입으로 클래스타입이다. 그래서 대문자로 시작

String 클래스에 있는 equals 메소드 = 선언된 String이 가지고 있는 문자열과 문자열을 비교
ex) if (!cardNo.equals(this.cardNo)
! = not
|| = or

exeption
try{}
catch(Exception e){
//e = type
String msg = e.getMessage();
//Exception 클래스에 e라는 변수


슈퍼클래스, 부모클래스
브클래스, 자식클래스

생성자가 있는 클래스의 상속
-자바 컴파일러는 생성자 안의 첫번째 명령문이 슈퍼클래스의 생성자 호출문이 아니면 자동으로 슈퍼클래스의 파라미터 없는 생성자(no-arg constructor) 호출문을 추가 한다.

this() 내 클래스에서 다른 생성자를 부를때

부모클래스의 생성자를 호출할때는 super를 사용한다.
super(accountNo, ownerName, balance, 매개변수);

메소드 오버로딩
클래스 안에서 동일한 이름을 가진 메소드 여러개를 정의 할수 있음
하지만 이 메소드는 서로 다른 것으로 인식 함(매개변수의 수와 종류

메소드 오버라이딩
속관계에 있는 클래스에서
부모 클래스에서 정의 되어있는 메소드를 자식 클래스에서 다시 정의를 한다.

부모클래스의 메소드를 자식메소드의 구미에 맞게 재정의 한다. = 메소드 오버라이딩
-> 이름은 동일하지만 서로 다른 기능, 다른 객체(?)가 된다.

부모클래스 메소드를 그대로 가져 와스 쓰지 못하니
자식 클래스에서 재정의 하겠다.

부모, 자식 클래스의동일한 메소드, 호출
super.deposit(amoount);

this() = 같은 클래스 안에서 동일한 이름이나 다른 메소드 호출
super() = 부모, 자식 상속관계 메소드에서 자식 생성자 메소드에서 부모 생성자 메소드를 부를때
this. = 동일한 클래스 내에서 클래스 속성이나 메소드의 매겨변수, 이름이 동일할때 두개를 구별하기 위해 씀
super. = 부모, 자식 상속관계에 있는 두 쿨래스에서 부모 클래스에 있는 속성or 메소드를 부르기 위해

ex) 하나의 알고리즘이 변형되었을때 이 알고리즘을 사용하는 클래스가 100개라면
일일이 바꿔주기보다
하나의 중심 클래스를 통해 상속하면
한번만 바꿔주면 된다.

final 키워드를 추가 한 클래스
- 상속을 금지하는 키워드
final class Account

메소드 오버라이딩을 금지하는 final 키워드
더 이상 오버라이딩 시킬수 없다.
final int withdraw(int amount(

인스턴스화를 금지하는 abstract 키워드 - 추상화, 생략?
abstract class Account
abstract int withdraw
->이 클래스는 객체를 생성할 수 없다. 아직 구체적으로 생성되지 않았따.
메소드 시그네쳐 (리턴타입 이름 매개변수)
abstract 메소드는 메소드 시그네쳐만 구현한다.
내부 구현이 되지 않고 틀만 만든다.

추상메소드(abstract method):  메소드 본체가 없는 메소드
추상 메소드가 필요한 경우

추상 메소드 = abstract 키워드가 꼭 들어가야 하며
{} 중괄호가 사용되지 않아야한다.
ex ) Student();


각 클래스중에

공통된 메소드를 부모 클래스에 추상화 메소드로 정의한다.
속성 부분도 공통된 부분을 부모 클래스 속성에 정의

혼자서 프로그래밍 할때는 불필요할수 있으나
대형 프로젝트, 여러명이 할때

초기 구조를 설계 할때( 클래스 구조 설계) 틀을 만들어 주고 (추상화 클래스)
각 부서에서 알아서 구현
각 부서간 통신을 위해 인터페이스 매개변수 정보 등은 통일한다.
호출할때 규격화된 방법으로 메소드를 호출한다.

abstract void sendMessage(String recipient);
본체 대신 세미클론을 써야 함. {} -> ;
메소드 선언 != 정의
선언 = 메소드의 시그네쳐만 만들어 놓은것
정의 = {메소드의 알고리즘}

정의 = 콘크리트 메세지 구현

추상 클래스는 추상메소드를 하나 이상 포함한다(?)

추상 클래스를 상속받은 하위 클래스에서는 반드시 추상 메소드 본체를 구현 해 줘야한다.
안그러면 하위 클래스도 추상 클래스가 되어 버린다.







일반적인 클래스는 concreat 콘크리트 클래스 (구체화된 클래스)
->객체를 이 클래스로부터 생성할 수 있다.











posted by DovewinG
2010. 11. 16. 16:28 도브의 프로그래밍/Java

속성, 메소드
static 붙을수도 있고 안붙을수도 있다.
메소드에 static이 붙으면 클래스에서 객체 생성시
객체마다 메소드가 복사 되지 않고 클래스만 가지고 있는다.
클래스 메소드

속성에 static이 붙으면 객체가 생성시 속성이 복사 되지 않고
본체클래스만 속성을 가지게 된다.
클래스 필드

static이 안붙은 메소드는 반드시 객체(인스턴스)를 생성 한 뒤 사용 해야 한다.
인스턴스 메소드, 인스턴스 속성(필드)


익셉션 처리는 메소드 단위로 이루어진다.
try {}
catch{}

catch(java.lang.ArithmeticException e) {
 System.out.println("에러 발생");
}
e = 익셉션이 넘어왔을때 저장할수 있는 변수(객체?)

인위적인 익셉션의 발생
throw 키워드를 이용 하여 익셉션 객체 생성
ex) throw new Exception();
throw문으로 시작, 익셉션 객체를 생성하는 생성식

ex) throw new Exception("잔액이 부족");

메소드 오버로딩
메소드와 메소드 호출문의 파라미터 수, 타입, 순서가 맞아야 한다.

메소드 시그니쳐(method signature) 메소드의 구성 형식
(메소드의 이름, 파라미터 변수의 수, 타입, 순서)


정적 필드(static field)
이 클래스에서 객체가 몇개나 생성되었는가
라는 통계를 낼수 있다.


static field를 접근할때는
클래스.이름 으로 접근해야 하나
객체이름.이름 으로 접근 해도 에러가 발생하지 않고
클래스.이름과 동일하게 구동 되도록 java에서 처리 되어있다.


상수 필드
final static in UPPER_LIMIT = 1000000;
static final int UPPER_LIMIT = 1000000;
상수를 표현할때 보통 대문자로 표현한다.

정적 메소드

정적 초기화 블록: static 키워드가 붙은 블록
메인메소드가 실행되기 전에 static 블록이 먼저 실행이 된다.

프로그램이 실행 되기 전 미리 초기화 할경우 static 블록을 사용
static 블록은 한번만 호출 된다.

정적 초기화 블록
static 블럭이 여러개일때는 순서대로 실행






posted by DovewinG
2010. 11. 9. 15:46 도브의 프로그래밍/Java
필드의 디폴트값
수치타입 = 0
불리언타입 = false
레퍼런스타입 = 그 밖의 모든 타입 = null
프리미티브타입
레퍼런스타입 String


둘 이상의 생성자
생성자가 이름은 같지만 매개변수의 정보를 비교하여 동일한지 아닌지 판단한다.
정보 = 매개변수 데이터타입, 수, 순서
매개변수의 이름은 다르더라도 위 정보가 동일하면 같은 메소드로 인식


get,
속성값을 읽어 오는 메소드
값을 읽어와서 반환해야하기때문에
속성의 데이터타입과 동일한 반환형을 쓴다.

 
set 메소드
속성값의 내용을 변경 시키는 메소드

set 메소드는 대부분 void 타입이다. 덮어쓰면 되기때문에 반환하지 않는다.



이름이 같아도 매개변수가 다르면 다른 메소드라고 인식한다.

생성자 안에서 다른 생성자를 호출하는 방법
this(name,id,password);

메소드 이름 대신 this를 쓴다.
this(부르고싶은 생성자의 매개변수의 인수에 맞게끔 인수를 지정)


클래스의 속성 정의는 위치가 어디에 있든 상관없다.



접근 범위

private 필드를 갖는 클래스는
클래스 외부에서의 접근은 금지 시키는 키워드로
클래스 외부에서는 접근 불가능하고
클래스 내부에서의 접근만 가능하다.

같은 패키지 내에서 접근 가능
프로젝트 폴더의 하위 폴더 = 패키지


final 선언은 - 명시적으로 처기화를 시켜 줘야 한다.
(실제 프로그래머가 생성 해줘야한다.)

Static - Static

Static 메소드에 붙으면 = 클래스에서 객체를 생성할때 static이 붙은 메소드는 복사가 제외한다.

클래스에만 존재 하는 메소드가 된다.

스태틱메소드,
(클래스메소드) 는 호출시
클래스이름.메소드이름
 으로 호출한다.
클래스 내에서는 클래스이름생략 가능

인스턴스 = 객체
인스턴스 메소드 = 객체별로 가지고 있는 메소드
호출시 어떤 객체가 가진 메소드인지 일러줘야한다.
객체명.메소드


posted by DovewinG
2010. 11. 5. 12:12 도브의 프로그래밍/ASP

2010년 11월 5일 수업
posted by DovewinG
2010. 11. 2. 16:46 도브의 프로그래밍/Java
UML

this.name = name

name는 매개변수로 받는 속성
this.name은 객체를 생성할때 새롭게 생성된 객체의 name 속성


11월2일 Lab 4 객체의 생성 및 클래스 생성 실습 자료



posted by DovewinG
prev 1 2 3 4 5 next