작성자 : 코로세

작성자 : 코로세

' IOT 기반 응용 SW과정 > Group Studying' 카테고리의 다른 글

5. 쓰레드  (0) 2016.06.17
은행 관리 프로그램  (0) 2016.06.14
4. 기본 API  (0) 2016.06.09
3. 상속, 인터페이스  (0) 2016.06.09
1. Java의 특징, 변수와 타입, 연산자  (0) 2016.06.09

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>


<%

String[] movieList = { "캡틴아메리카", "배대슈", "엑스맨", "곡성" };

pageContext.setAttribute("movieList", movieList);

%>

<c:forEach var= "movie" items="${movieList}">

   ${movie}<br>

</c:forEach>


</body>

</html> 

서블릿에서 요청에 따라 서비스에 적절한 로직처리 메소드를 호출하고 그 결과에 대한 데이터를 req의 attribute에 실어서 포워드 보내면 jsp에서는 그녀석을 EL로 뽑아 출력하거나 데이서셋이라면 위 방법으로 반복돌면서 데이터 접근


' IOT 기반 응용 SW과정 > Web Programing' 카테고리의 다른 글

Day46 자바스크립트  (0) 2016.05.24
Day45 데이터베이스와 JDBC  (0) 2016.05.20
Day43 JSTL(JSP Standard Tag Library)  (0) 2016.05.18
Day42 표현언어  (0) 2016.05.18
Day41  (0) 2016.05.16

템플릿 메소드 패턴



//부모클래스에서 템플릿에 해당하는 메소드(fight)가 정의되있고 fight 내용중 세부 attack,move하는 기능에 대한 정의는 추상메소드로 남겨둔채


//자식클래스에서 세부 attack,move를 구현해서 템플릿을 완성하는 방법


package d02;


public abstract class Robot {

protected String name;

public void fight(){

System.out.println(name +  "가 전투를 시작합니다.");

attack();

move();

attack();

System.out.println(name + "가 전투를 종료합니다.");

}

public abstract void attack();

public abstract void move();

}

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

package d02;


public class TaekwonV extends Robot{


// String name = "태권브이";

public TaekwonV(){

name = "태권브이";

}

public void attack(){

System.out.println("펀치로 공격!");

}

public void move(){

System.out.println("날아서 이동!");

}

}


전체 윤곽인 구조(템플릿)에 대한 재사용은 잘 이뤄지지만, 세부구형기능에 대한 재사용은 이뤄지지 않음.


기능을 재사용하려면, 일단 기능을 분리해야됨. <-- 기능을 구현하는 독립적인 클래스로 구현.



단일 책임 원칙 : 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함을 일컫는다. 클래스가 제공하는 모든 기능은 이 책임과 주의 깊게 부합해야 한다.




단일 책임 원칙의 장점 단일 책임 원칙을 지키려고 하다 보면 인터페이스 등을 도입하게 되며여러 디자인 패턴을 적용해서 설계를 우아하게 만들게 된다그러면서 자연스럽게 모듈간의 결합이 느슨해진다이것은 어떤 변경이 필요할 때 수정 대상을 명확하게 하는 결과를 가져온다.


의존 관계 역전 원칙 :  소프트웨어 모듈들을 분리하는 특정 형식을 지칭한다. 이 원칙을 따르면, 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존 관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다.


리스코프 치환 원칙 : 컴퓨터 프로그램에서 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환)할 수 있어야 한다는 원칙이다. 



' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day17 제네릭과 컬렉션  (0) 2016.04.05
Day16 패키지  (0) 2016.04.04
Day 14 형변환 , 추상클래스  (0) 2016.03.31
Day13 상속  (0) 2016.03.30
Day12 변수  (0) 2016.03.29

객체와 클래스에 대한 설명 

1. 클래스는 객체를 생성하기 위한 설계도(청사진)와 같은 것이다.

2. new 연산자로 클래스의 생성자를 호출함으로써 객체가 생성된다.

3. 객체는 클래스의 인스턴스이다.


클래스의 구성멤버

1. 필드 (filed)

2. 생성자 (constructor)

3. 메소드 ( method)


필드, 생성자, 메소드에 대한 설명

1. 필드는 객체의 데이터를 저장한다.

2. 생성자는 객체의 초기화를 담당한다.

3. 메소드는 객체의 동작 부분으로, 실행 코드를 가지고 있는 블록이다.


필드에 대한 설명

1. 필드는 메소드에서 사용할 수 있다.

2. 인스턴스 필드 초기화는 생성자에서 할 수 있다.

3. 필드는 초기값을 주지 않더라도 기본값으로 자동 초기화된다.


생성자에 대한 설명

1. 생성자는 다른 생성자를 호출하기 위해 this()를 사용할 수 있다. 

2. 생성자가 선언되지 않으면 컴파일러가 기본 생성자를 추가한다.

3. 외부에서 객체를 생성할 수 없도록 생성자에 private 접근 제한자를 붙일 수 있다. 


메소드에 대한 설명

1. 리턴값이 없는 메소드는 리턴 타입을 void로 해야 한다.

2. 리턴 타입이 있는 메소드는 리턴값을 지정하기 위해 반드시 return문이 있어야 한다.

3. 매개값이 수를 모를 경우 "..."를 이용해서 매개 변수를 선언할 수 있다. 


메소드 오버로딩에 대한 설명

1. 동일한 이름의 메소드를 여러 개 선언하는 것을 말한다.

2. 매개 변수의 타입, 수 , 순서를 다르게 선언해야 한다.

3. 매개값의 타입 및 수에 따라 호출될 메소드가 선택된다. 

' IOT 기반 응용 SW과정 > Review' 카테고리의 다른 글

套装  (0) 2016.04.04
约分  (0) 2016.03.30
排序  (0) 2016.03.23
反复文  (0) 2016.03.22
第一次 考试  (0) 2016.03.21





멤버변수(필드)의 수식어에는 public/private을 줄 수있음. private 수식어가 붙은 멤버는 클래스 외부에서 접근불가






getter/setter를 쓰는이유 : 1. 외부에서 남의 데이터를 직접 접근하는 것을 막기 위해서

         2. 세분화된 접근제어(읽기전용/쓰기전용/둘다됨/둘다안됨) ex) getter만 만들고 setter를 안들면 해당 변수는 읽기전용

         3. 입력값에 대한 검증이 가능



getter 만들기


수식어는public 

반환유형은 내가 getter되고자 하는 변수의 타입

메소드명은 get변수형

매개변수 없음

몸통: return 변수;


setter 만들기 


수식어는 public 

반환유형은 void 

메소드명은 set변수명 

매개변수 : 내가 setter가 되고자하는 변수와 같은 타입의 매개변수 한개

몸통: {내가 setter가 되고자하는 변수} = 매개변수;



메소드 오버로딩 -> 함수이름이 같은데 매개변수가 다른 두개이상의 함수를 정의하는것.




이클립스는 외부 프로그램을 이클립스에 연동해서 사용할 수 있도록 플러그인 인터페이스를 제공, 

외부 프로그램은 이클립스의 플러그인 인터페이스를 준수해서 프로그램을 작성하면 이클립스와 연동해서 이클립스 상에서 사용할 수 있음.


이클립스에 플러그인을 설치하는 방법 :


1. 마켓에서 줍줍

2. 설치 url을 먹이거나

3. 이클립스 폴더안에 쳐박기.


ex)  UML (Unified Modeling Language) - - - - - -ObjectAid UML Explorer







생성자(contructor) : 객체가 생성될 때에 필드에게 초기값을 제공하고 필요한 절차를 실행하는 메소드;

생성자의 특징 : 수식어는 왠만하면 public // 문법적으로 반환유형 자체가 없음 // 얘도 메소드닌까 오버로딩이 가능 //

                      생성자메소드명은 클래스명과 동일


생성자를 하나도 정의 하지 않았을 경우에는 몸통이 텅 비어있는 기본생성자를 컴파일러가 끼워 넣음.


//%02d -> 2칸쓰는데 없으면 0






' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day12 변수  (0) 2016.03.29
Day11  (0) 2016.03.28
Day09 객체지향  (0) 2016.03.24
Day 08 정렬  (0) 2016.03.23
Day 07 배열  (0) 2016.03.22

<객체지향> 관련있는 변수와 함수를 하나의 꾸러미로 묶어서 관리, 실제 세계를 모델링하여 소프트웨어를 개발하는 방법 ;

객체 : 힙영역에 할당되있는 모든 데이터 (new연산자를 이용해 만들어진 데이터) 

객체의 상태(state) : 객체의 특징값(속성) = 변수(필드)이다.

객체의 동작(behavior) : 객체가 취할 수 있는 동작 = 함수(메소드)

 

클래스 : 관련있는 함수와 변수를 조합해 만든 자료형 -> 객체란 클래스를 통해 생성해낸 데이터

         


<객체 지향 프로그래밍(Object-Oriented Programming, OOP)>은 컴퓨터 프로그래밍의 패러다임의 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다 


출처 : https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D




<구조체 : 다른 타입의 변수들의 묶음 자료형> -> 사용자 정의 자료형

// 배열 : 같은 타입의 변수들의 묶음 자료형





class Student{

int age;

int score; //Student 타입으로 데이터를 한번 생성하면 그안에는

String name;         // 그안에는 정수변수 두개 문자열변수 한개의 조합된 데이터가 만들어짐

}


public class StructTest {

public static void main(String[] args) {

// Student s;//우리가 만든 데이터타입 Student라는 타입의 변수 s를 생성

Student s = new Student();   //-Student데이터의 위치가담김

               s.age = 10; s.score = 100; s.name = "학생1"; System.out.println("나이 : "+ s.age); System.out.println("점수 : "+ s.score); System.out.println("이름 : "+ s.name); } }



<함수(메소드) : 명령어들의 집합>



public static void 그림그리기명령어집합(){

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

} // 나중에 또 사용될 가능성이 많은 코드들에 이름을 지어주면 재활용하기 쉬움



public static void 그림그리기명령어집합(){

String name ="??";

name ="학생1";

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);

name = "학생2";

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);

name = "학생3";

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);



그림그리기명령어집합("학생1");

그림그리기명령어집합("학생2");    //인자값 // String name = "학생1" 

그림그리기명령어집합("학생3");


public static void 그림그리기명령어집합(String name){

      //매개변수

//함수 실행 전 매개변수 = 인자값 코드를 수행함

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);









public class StringTest {

public static void main(String[] args) {

String proverb = "A barking dog";

String s1, s2, s3, s4;

System.out.println("문자열의 길이 = " + proverb.length());

s1 = proverb.concat(" never Bites!");

s2 = proverb.replace('b', 'B');

s3 = proverb.substring(2, 5);

s4 = proverb.toUpperCase();

System.out.println(s1);

System.out.println(s2);

System.out.println(s3);

System.out.println(s4);

}

}




 Object 클래스의 주요 메소드 <-- 모든 자바 클래스들은 Object 클래스로부터 상속받는다.


 메소드

설 명 

 String toString()

 현재 객체의 문자열을 반환한다




객체의 생성

Car    myCar;

myCar = new Car();


1. 참조 변수 선언 : Car 타입의 객체를 참조할 수 있는 변수 myCar를 선언한다.

2. 객체 형성 : new 연산자를 이용하여 객체를 생성하고 객체 참조값을 반환한다.

3. 참조 변수와 객체의 연결 : 생성된 새로운 개체의 참조값을 myCar라는 참조 변수에 대입한다.



' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day11  (0) 2016.03.28
Day10 public/private  (0) 2016.03.25
Day 08 정렬  (0) 2016.03.23
Day 07 배열  (0) 2016.03.22
Day 06 复习  (0) 2016.03.21

소스파일작성

* 윈도우 보조 프로그램의 메모장 사용

* 파일의 확장자는 .java로 한다.                                   //대소문자 구분!


Hello.java                                                                                        

public class Hello {

public static void main(String[] args){

 System.out.println("안녕하세요. 자바 프로그래머 여러분!");

}

}

                                                                                                  


--> 바탕화면에 저장 --> cmd 실행 --> dir 입력 --> cd Desktop --> dir 입력

--> javac hello.java 입력 -->dir 입력 --> Hello.class 확인(컴퓨터가 실행가능한 기계어로 이뤄진 작업수행명세) --> java Hello 입력(확장자명.class 제외)


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

소스코드편집 + 컴파일 + 실행 = IDE



-> 이클립스(eclipse) <-

설치




->이클립스 폰트변경방법





뷰 지정

자바에서 세가지의 주석문법

1. 문장 주석 : //로 시작해서 편집기상의 라인이 끝날때까지의 내용을 무시

2. 문단 주석 : /* 를만나서  */ 만날때까지의 내용을 무시

3. 문서 주석 : /**  **/


이클립스에서의 주석단축키

 ctrl + shift + c (범위지정 후)

ctrl + / (범위지정 후)

자바 내에 public class는 한개 / / F2 - 파일명 변경


/*CPU(중앙처리장치) -> 연산장치

  메모리(주기억장치) -> 저장장치

     HDD(보조기억장치) -> 저장장치*/ 



변수(variable) : 값을 담을 수 있는 바구니 

[데이터를 일시적으로 저정할 목적으로 사용하는 메모리공간]


int x = 100 / int y = 200 / int sum  // sum = x + y



/* 컴퓨터 구조론, 운영체제, 데이터베이스, 네트워크통신, 알고리즘 

bit = 0/1을 한개 저장할 수 있는 공간 / byte : 8bit : 저장 최소 단위 

ASCII

1바이트를 구성하는 8비트 중에서 7비트만 쓰도록 제정된 이유는, 나머지 1비트를 통신 에러 검출을 위해 사용하기 때문이었다. Parity Bit라고 해서, 7개의 비트 중 1의 갯수가 홀수면 1, 짝수면 0으로 하는 식의 패리티 비트를 붙여서, 전송 도중 신호가 변질된 것을 수신측에서 검출해낼 확률을 높인 것. */


클래스(class) : 자바 프로그램을 구성하는 구성요소, 영역을 나누는 역할

= 필드(변수) + 메소드(함수)

메소드(함수)란,, 입력을 받아서 작업을 수행하고 결과를 내보냄, 명령문장들의 집합

main() 메인함수

함수의 구성요소

-> 몸통 : 이 함수가 호출됬을때 실행해야 될 문장집단

-> 매개변수 : 함수가 실행될때 전달받는 입력값

-> 반환값 : 함수가 끝나고 돌려줘야되는 값

/* 구조체 */


' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day 06 复习  (0) 2016.03.21
Day 05 if/while  (0) 2016.03.18
Day 04 변수  (0) 2016.03.17
Day 03 영역  (0) 2016.03.16
Day 01 开始  (0) 2016.03.14

+ Recent posts