안드로이드&IOS 앱 개발자 양성

안드로이드&IOS 앱 개발자 양성(41일차) - eclipse에서 apache tomcat 설정, 반복문, 제어문의 중첩, 기타 제어문, function(함수), Object(객체)

HRuler 2020. 6. 4. 18:25
더보기

 ** Eclipse에서 apache tomcat 설정

 ** 반복문
1. for
2. while
3. do ~ while

 

 ** 제어문의 중첩

 ** 기타 제어문
1. break
2. continue
3. return

 ** function(함수)
1. 종류
2. 작성 방법
3. 함수 호출
4. argument(매개변수)
5. return
6. 함수 확인
7. recursion(재귀)
8. Call By Value & Call By Reference
9. 자바스크립트의 함수는 일급 객체
10. Maker Function

 ** Object(객체)
1. 객체 생성
2. 객체가 자신의 속성을 호출하는 방법
3. 속성에 값을 대입
4. 객체의 속성을 제거
5. 생성자 함수(Constructor)
6. for - in
7. 객체 생성을 하는 경우

 ** 내장 객체
1. 내장 객체의 분류
2. BOM

 ** eclipse에서 apache tomcat 설정

 - java나 php를 이용해서 웹 서버를 구성하는 경우 java나 php의 내용을 번역해서 html로 변환하기 위해서 설치하거나 만든 웹 사이트를 배포하고자 할 때 설치

 - 처음 웹 프로젝트를 실행시킬 때 tomcat 버전을 선택하고 tomcat 명령어가 잇는 디렉토리를 선택해서 실행한다.

 - 위 처럼 했는데 실행이 안 되는 경우는 포트 문제

 - 포트를 변경하고자 할 때는 Servers 디렉토리가 있는데 그 안에서 server.xml 파일에서 수정해야 한다.

 - port가 -1로 설정되어 있는지 확인해서 -1이면 다른 번호로 변경

 - 변경할 때 0-1024 그리고 1521, 8080, 3306, 27017번은 회피하는 것이 좋다.

 - port가 8080인 경우 오라클이 구동 중이면 port 충돌이 발생한다.

 - 오라클이 설치된 컴퓨터이면 다른 번호로 변경, 자기 컴퓨터를 웹 서버로 사용하려고 하는 경우 80(http) 번이나 443(https)으로 변경 80이나 443이 되면 포트 번호를 생략해도 외부에서 접근이 가능하다.

 - Java Web이나 Spring을 할 때 Servlet이나 JSP 파일을 추가하면 에러가 나는 경우가 있는데 tomcat/lib라는 디렉토리에 servlet-api.jar 파일이 있는데 이 파일을 WebContent/WEB-INF/lib 디렉토리에 복사해주면 된다.

 ** 반복문

1. for

for(처음 1번만 수행할 식; 판별식; 두번째 부터 수행할 식){

                   반복할 내용;

}

 - 3개의 식 모두 생략 가능 ;은 생략하면 안된다.

 - 맨 처음 1번만 수행할 식을 수행하고 판별식을 확인해서 false가 아니면 {} 안의 내용을 수행하고 두 번째부터 수행할 식을 수행하고 판별식을 확인해서 false가 아니면 {} 안의 내용을 수행하고 false이면 {}의 바깥으로 이동해서 수행

for(변수의 초기화; 중단 조건; 증감식)의 형태로 많이 작성

 

2. while

 - 중단 조건만 작성하는 반복문

while(중단 조건){

               반복할 내용;

}

 - for는 반복할 횟수를 알 때 for를 사용하고 중단할 조건을 알 때는 while을 사용한다.

초기식;

while(중단 조건){

               반복할 내용;

               증감식;

}

의 형식으로 for처럼 사용 가능

3. do ~ while

 - 반드시 1번만 수행한다는 의미 전달을 하기 위한 반복문

do {

            반복할 내용;

} while(중단 조건);

 

초기식;

do {

          반복할 내용;

          증감식;

} while(중단 조건);

- 위처럼 작성하면 for처럼 사용 가능

 ** 제어문의 중첩

 - 제어문은 중첩해서 사용하는 것이 가능

 - 먼저 작성한 제어문이 나중에 닫혀야 한다.

 - 시작은 바깥쪽 제어문에서 시작되고 안쪽 제어문을 전부 수행한 후 바깥쪽 제어문의 다음으로 이동

*

**

***

****

*****

 - document.write("*") : * 출력

 - document.write("<br/>") : 줄 바꿈

 ** 기타 제어문

1. break

 - switch나 반복문에 사용해서 가까이에서 시작한 제어문을 빠져나가는 역할

 - switch에서는 조건 없이 사용하지만 반복문에서는 분기문과 같이 사용하는 것이 일반적

2. continue

 - 반복문에 사용해서 가장 가가이에서 시작한 반복문의 다음으로 이동

 - 분기문과 같이 사용하는 것이 일반적

3. return

 - 함수나 메서드를 종료하고 호출한 곳으로 제어권을 이동하는 역할

 - return 뒤에 데이터가 있으면 데이터를 가지고 return

 ** function(함수)

 - 자주 사용하는 코드를 독립적으로 수행할 수 있도록 하나의 이름으로 묶어 둔 것

 - function이 클래스나 인스턴스 안으로 들어가서 클래스나 인스턴스를 통해 호출하면 method라고 한다.

 - 함수는 독립적으로 실행

 - 별도의 메모리 영역(Stack이라는 자료구조로 생성)을 가지고 생성

1. 종류

1) 사용자 정의 함수 : 개발자가 직접 만든 함수

2) Maker 함수 : 프로그래밍 언어가 제공하는 함수

3) 3rd party 함수 : 다른 개발자가 만들어서 제공하는 함수

2. 작성 방법

function 함수 이름(매개변수 나열){

                함수 내용;

                (return 데이터;)

}

 

var 함수 이름 = function(매개변수 나열){

                함수 내용;

                (return 데이터;)

}

 - 예전에는 첫 번째 방법을 주로 이용했지만 최근에는 두 번째 방법을 권장

 - return은 생략 가능

3. 함수 호출 

함수 이름(매개변수 대입);

 - return 하는 데이터가 있으면 변수에 대입하거나 출력할 수 있고 다른 메서드를 연달아서 호출하는 것도 가능

4. argument(매개변수)

 - 함수를 호출할 때 넘겨주는 데이터

 - 자바스크립트에서는 매개변수를 만들 때 자료형을 기재하지 않음

 - 함수를 호출할 때 매개변수의 값을 뒤에서부터 순서대로 생략해서 호출할 수 있음

 - 생략된 매개변수는 undefined가 된다.

 - 자바스크립트의 함수는 함수 내에서 매개변수들을 별도의 배열로 만들어서 관리

 - 이 배열의 이름은 arguments

 - 매개변수 이름 대신에 arguments [인덱스]를 이용해서 매개변수 사용이 가능

 - 실제 이용은 거의 하지 않음

5. return

 - return은 함수의 수행을 종료하는 제어문

 - return 다음에 데이터가 있으면 데이터를 가지고 호출한 곳으로 돌아가게 된다.

 - 데이터를 리턴하면 이 데이터를 다음 표현식에 사용할 수 있고 데이터가 가진 메서드를 다시 호출할 수도 있다.

6. 함수 확인

 - 직접 만든 함수가 아닌 경우 함수의 매개변수를 확인하고 리턴 타입을 확인

 - 함수는 도큐먼트를 확인하면서 사용

7. recursion(재귀)

 - 함수가 자기 자신을 내부에서 다시 호출하는 것

 - 장점은 복잡한 로직을 간단하게 구현

 - 단점은 함수가 내부에서 다시 함수를 호출하기 때문에 결과가 나오는데 시간이 걸리고 메모리 사용량이 많음

 - 합계나 팩토리얼, 피보나치, 하노이의 탑 등이 재귀로 구현할 수 있는 대표적인 알고리즘이다.

 ex) 피보나치수열(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,...)

      - 첫 번째와 두 번째는 1, 세 번째부터는 앞 2개의 항의 합

8. Call By Value & Call By Reference

 - call by value : 매개변수의 자료형이 scala type인 경우

 - 함수 내부에서 매개변수의 값을 변경해도 원본에는 영향이 없음

 - call by reference : 매개변수의 자료형이 vector type인 경우

 - 함수 내부에서 매개변수 내부의 데이터를 변경하면 원본의 데이터도 변경

9. 자바스크립트의 함수는 일급 객체

 - 일급 객체라는 의미는 함수도 하나의 데이터로 취급한다라는 의미이다.

 - 함수도 변수에 대입이 가능하고 다른 함수의 매개변수가 될 수 있고 return을 할 수 있다.

1) CallBack Function

 - CallBack은 이벤트가 발생하면 호출되는 함수

 - 자바스크립트에서는 이벤트 처리를 콜백 함수를 이용해서만 처리

2) 내부 함수

 - 함수 안에 함수를 만드는 것이 가능

3) closure(언어로서의 closure, javascript에서의 closure, swift에서의 closure가 모두 다르다)

 - 언어마다 의미가 다름

 - 함수 내부에서 함수를 리턴해서 함수 외부에서 함수 내부의 데이터를 변경하기 위한 용도로 사용

 - 자바스크립트를 이용하는 곳의 면접에서 가장 중요

4) 변수의 구분

 - local varible(지역 변수) : 자신의 영역 내에서만 사용이 가능한 변수

 - global variable(전역 변수) : 모든 영역에서 사용이 가능한 변수

 - member variable(멤버 변수 - 속성, attribute, property, field) : 인스턴스가 소유하고 있는 변수

 - static variable(클래스 변수) : 클래스가 소유하고 있는 변수

5) closure를 사용하는 이유

 - 프로그래밍에서는 특별한 경우를 제외하고는 전역 변수 사용을 금기시한다.

 - 전역 변수는 프로그램 내부 어디에서나 값을 변경할 수 있기 때문에 가독성을 떨어뜨리고 객체 지향의 개념에도 맞지 않는다.

 - 객체 지향 프로그래밍에서는 전역 변수를 사용하고자 하는 경우에 Singleton 패턴의 클래스를 만들어서 사용한다.

10. Maker Function

 - Maker Function : 프로그래밍 언어가 제공하는 함수

 - JavaScript에서는 실제로 window 객체가 소유한 함수이고 window 객체가 소유한 함수는 window. 을 생략하고 호출할 수 있기 때문에 마치 MakerFunction처럼 사용한다.

1) alert

 - 대화상자에 메시지를 출력하는 함수

 - 매개변수는 메시지만 설정하면 된다.

 - 모달 창을 만들어서 출력한다.

 - 대화상자의 구분

 - Modal : 제어권을 대화상자가 가지고 자신이 종료되기 전까지 제어권을 넘겨주지 않는 형태의 대화상자 - 대표적으로 파일 메뉴의 열기 대화상자

 - Modeless : 제어권을 대화상자가 가지지만 자신이 종료되기 전에도 다른 곳으로 제어권을 이동시킬 수 있는 대화상자 - 대표적으로 편집 메뉴의 찾기 대화상자

2) confirm

 - 2개의 버튼을 만들어서 확인과 취소를 선택하도록 해주는 대화상자

 - 매개변수는 출력할 메시지 1개이고 리턴은 Boolean

 - 확인을 누르면 true를 리턴하고 취소를 누르면 false를 리턴

3) prompt

 - 1줄 입력란과 확인과 취소 버튼을 만들어서 한 줄 문자열을 입력받고 리턴하는 대화상자

 - 매개변수가 2개인데 첫번째 매개변수는 출력할 메시지이고 두 번째 매개변수는 기본값

 - 확인을 누르면 입력한 문자열이 리턴되고 취소를 누르면 null이 리턴된다.

4) 현재 웹에서는 이런 대화상자를 거의 사용하지 않음

 - 브라우저에서 팝업 창 차단 옵션을 선택하면 팝업은 물론 대화상자도 출력되지 않음

 - 최근에는 팝업 창 대신에 layer popup을 이용

 - 앞의 3개의 함수는 학습을 할 때 주로 이용

5) eval()

 - body에 만들어진 태그의 name을 직접 설정해서 DOM 객체를 가지고 오는 함수

 - 예전의 웹 페이지들에서 form 안의 요소를 가져올 대 이용했다.

 - 최근에는 document.getElementById()를 이용해서 가져오도록 권장

6) 인코딩 / 디코딩 함수

 - encoding : 문자열을 컴퓨터에 저장하는 형태로 변경하는 것

 - decoding : 컴퓨터에 저장된 코드를 원래의 문자열로 되돌리는 것

 - URL에서 파라미터는 반드시 encoding을 해야 한다.

 - URL의 구조

 - 프로토콜://IP 또는 도메인:포트번호/요청 경로?이름=값&이름=값...

 - 포트번호는 기본 포트번호를 사용하면 생략이 가능

 - 요청 경로도 서버 설정에 따라 생략 가능

 - 물음표 뒤에 이름=값 부분을 parameter 또는 query string 이라고 한다.

 - 클라이언트가 서버에게 넘겨주는 데이터

 - 이 부분은 반드시 인코딩이 되야 한다.

 - 다른 부분은 인코딩하면 안된다.

 - 인코딩 관련 함수(escape : 일부 특수문자와 ASCII 코드를 제외하고는 전부 인코딩,

 - 인코딩 관련 함수(encodeURI : 웹 url을 구성하는 특수문자를 제외하고 전부 인코딩,

 - 인코딩 관련 함수(encodeURIComponent : 앞파벳과 숫자를 제외한 모든 문자를 인코딩)

 - 디코딩 관련 함수는 unescape, decodeURI, decodeURIComponent

7) isNaN(데이터)

 - 데이터가 숫자인지 판단해서 리턴

 - 앞에 is가 붙으면 자료형은 Boolean

8) isFinite(데이터)

 - 데이터가 유한한 수인지 판단해서 리턴

9) parseInt & parseFloat

 - 데이터를 정수와 실수로 변경해주는 함수

 - 숫자와 문자가 혼재되어 있으면 앞에서부터 변경할 수 있는 만큼만 변경

 ** Object(객체)

 - 존재하는 모든 것은 객체

 - Instance : 클래스를 기반으로 만들어진 객체

 - JavaScript는 객체 기반 언어이고 Java는 객체 지향 언어

 - 객체 기반 언어는 클래스 없이 객체를 생성할 수 있고, 객체 지향 언어는 반드시 클래스를 만들고 객체를 생성해야 한다.

 - JavaScript의 객체는 Java의 Map과 유사한 성질을 갖는다.

1. 객체 생성

{속성이름:값, 속성이름:값...}

 - 속성이름은 특별한 경우가 아니면 문자열로 작성

 - 값은 데이터와 함수 모두 가능

 - 함수를 대입하면 이 경우는 함수라고 하지 않고 메소드라고 한다.

 - 속성이름 대신에 메소드이름이라고 한다.

 - 객체에 이름이 없어서 객체를 재사용할 수 없어서 보통은 변수에 객체를 대입한다.

var 객체이름 = {속성이름:값, 속성이름:값...}

2. 객체가 자신의 속성을 호출하는 방법

1) 객체.속성이름

2) 객체["속성"]

3) 객체.메소드이름(매개변수)

3. 속성에 값을 대입

객체.속성이름 = 내용;

 - 없는 속성이름을 사용하면 속성이 추가

 - 존재하는 속성이름을 사용하면 속성이 수정

4. 객체의 속성을 제거

객체.속성 = null;

delete(객체.속성);

5. 생성자 함수(Constructor)

 - 동일한 모양의 객체를 여러 개 생성을 하기 위해서 작성

function 생성자함수이름(매개변수){

                  내용;

}

 - 내용을 만들 때 변수이름앞에 this.을 붙이면 속성으로 만들어진다.

 - this.을 생략하고 변수를 만들면 지역변수가 된다.

 - 함수를 호출할 때 new와 함께 호출한다.

 - new는 함수를 가지고 객체를 생성하고 그 객체의 참조를 리턴한다.

 - 함수 내에서 this가 보이면 생성자 함수이고 this가 보이지 않으면 일반 함수이다.

6. for - in

 - 반복문이나 객체에 사용해서 반복문의 인덱스 그리고 객체의 속성을 하나씩 순회하는 제어문

]

7. 객체 생성을 하는 경우

 - 대부분의 경우는 ajax를 사용할 때 파라미터를 하나로 만들기 위해서 주로 이용

 ** 내장 객체

 - 자바스크립트가 제공하는 객체

 - http://www.w3schools.com/jsref/default.asp, http://devdocs.io/javascript/ 에서 내장 객체 속성과 메소드 확인 가능

1. 내장 객체의 분류

1) BOM(Browser Object Model) : 자바스크립트가 생성해서 제공하는 객체

2) DOM(Document Object Model) : body 안에 만든 태그들을 사용할 수 있도록 해주는 객체

2. BOM

1) Object

 - 자바스크립트의 최상위 객체

 - 자바스크립트의 모든 객체는 이 객체를 상속받는다.

 - 모든 객체가 가져야 하는 공통 속성을 가지고 있는 객체로 직접 객체 생성은 하지 않는다.

 - toString() : 객체를 문자열로 반환해주는 메소드

 - 이 메소드는 직접 호출해도 되지만 출력하는 메소드에 객체이름을 대입하면 자동으로 호출된다.

 - 객체 지향 언어들은 이러한 유형의 메소드를 소유하고 있다.

2) number

 - 숫자 데이터를 저장하기 위한 객체

 - 숫자 리터럴을 이용해서 생성할 수 잇고 number("숫자로 된 문자열")로 생성

3) string

 - 문자열 데이터를 저장하기 위한 객체

 - 변경할 수 없는 형태로 문자열을 저장하기 때문에 모든 메소드가 작업을 하고 리턴한다.

 - 문자열의 길이는 length라는 속성이 제공하고 charAt(인덱스)를 호출하면 인덱스 번째 문자를 리턴한다.

 - 그 이외의 메소드로는

 - trim() - 좌우 공백 제거, toUpperCase(), toLowerCase(),

 - indexOf(문자열) - 문자열이 존재하면 문자열의 위치를 존재하지 않으면 음수를 리턴, lastIndexOf(문자열), 

 - split(정규식) - 정규식을 기준으로 문자열을 분할해서 배열로 리턴,

 - subString() - 문자열을 위치를 가지고 분할해서 리턴, substr(),

 - charCodeAt() - 코드를 가지고 문자를 리턴

 - 등의 메소드가 존재

 - 알고리즘 공부를 할 때는 되도록이면 length와 charAt 만으로 모든 것을 해결하는게 좋고, 애플리케이션을 구현할 때는 메소드를 찾아서 사용