Sololearn에서 제공하는 Java 언어 학습은 총 60개 레슨으로 이루어져 있습니다. 현재는 아직 40번째 레슨에 머물러 있는 상태에요. 뒤로 갈수록 어려워져서 그렇습니다. 부트캠프 핑계로 Sololearn을 놓고 있지만 이번주 일요일까지는 Sololearn의 Java를 끝내 보도록 하겠습니다. 어차피 저랑은 당분간 친해지려고 노력해야하는 언어입니다. 이 포스팅에서는 공부하다가 헷갈리거나 다시 복습하고 싶은 부분을 캡쳐해서 정리해보려고 합니다.

 

지난번에 썼던거 다 날라가서 슬펐지만 다시 마음 다 잡고 복습해봅니다.

복습 두 번 하면 좋지 뭐...🥹

 

sololearn Java

Scanner

  • Scanner class를 사용하기 위해서 다음 syntax를 사용함
    • Scanner myVar = new Scanner(System.in);

scanner

Division

  • int 타입으로 계산한 것은 int 타입으로 결과가 나옴
  • 소수점까지 원하면 double을 사용

division

 

Prefix & Postfix

  • Prefix: 변수의 값을 증가시키고 새로운 증가된 값을 연산에 사용
  • Postfix: 변수의 값을 사용 후에 값을 증가시킴

prefix postfix

Decision Making

  • 조건문(conditional statements)는 다른 조건에 다른 실행을 하도록함
  • if문은 가장 자주 사용되는 조건문중에 하나
  • if가 true이면 실행되고 아니면 다음 코드가 실행됨

decision making

if...else Statements

  • if문이 false이면 else가 실행됨

if else

The OR Operator

  • The OR Operator(||)은 어느 하나가 true이면 실행

Or Operator

The default Statement

  • switch문은 default case를 옵션으로 가질수 있음
  • 다른 케이스가 다 false이면 default case를 실행
  • default case는 break문이 필요 없음

the default Statement

The switch Expression

  • allows multiple comma-separated values per case
  • -> 을 사용함

switch expression

while Loops

  • 주어진 조건이 true인 이상 계속 반복

while문

for Loops

  • 특정한 숫자만큼 반복한다
  • for(initialization; condition; increment/decrement){statement(s)}

for문

 

do...while Loops

  • do...while문은 최소 한번은 실행됨
  • 일단 한번 실행 하고 그다음에 while 문 조건에 따라 실행

do while

 

continue

  • 반복문이 스킵하고 다음으로 넘어가게 함

continue

Arrays

  • int [ ] arr = new int[5]
    • new 키워드를 사용해서 array에 integers 5개가 있다고 선언함

arrays

 

Enhanced for Loop

enhanced for loop

 

Reverse a String

  • .toCharArray() : String 타입을 CharArray로 바꾼다. 문자열을 문자별로 다 따로 저장
    • ex) "Santa" -> "S", "a", "n", "t", "a"
  • arr.length에 -1을 하는 이유: 
    • .length에 -1을 하지 않는 경우: core dump error가 발생
    • arr[10]에서 배열의 첫 주소는 0부터 시작하지만!!
    • 즉, 배열의 주소는 arr+0, arr+1, ..., arr+9까지이고, 이는 arr[0], arr[1], ..., arr[9]로 표현됨
    • 즉, arr[10]부터는 존재하지 않고 arr[10]에 관한 코드가 작성되면 에러가 발생
    • 이중for문에서 j<length(=10)이기 때문에 j가 될 수 있는 가장 마지막 수는 9가 되니 j가 9인 경우, if문 안에 j=9인 상황을 대입하면 arr[9] < arr[10]입니다. 이 때 arr[10]은 코드 어디에도 정의되지 않았기 때문에 찾을 수 없음. 그렇기 때문에 컴퓨터는 arr[10]이 도대체 어디 정의되었는지 알 수 없다고 에러를 발생시킵니다.
    • 그렇기 때문에 for문의 범위를 length-1까지 정해준다.
  • 그러니까 갯수 세는건 우리가 아는 것 처럼 세지만!!! index 번호는 0부터 시작하니까 array 마지막 수를 부르고 싶으면 array.length-1 을 써야한다!

Reverse a String

Object-Orientation

  • Java는 Object-Oriented Programming(OOP) 객체지향 프로그래밍 스타일을 사용하고 현실과 가깝게 프로그래머들이 생각할 수 있도록 한다
  • OOP에서는 각 객체가 유니크 아이덴티티를 가진 독립적인 유닛이다. (마치 현실에서 그런것처럼(?))
    • 사과는 객체이다. 머그잔도 그러하다. 각각의 사물은 그만의 아이덴티티를 가진다. 두개의 머그잔이 똑같이 생길 수는 있지만 각각의 독립적인 유니크한 objects이다.
  • Objects는 그들을 묘사하는 특징이 있다.
    • 차가 빨간색이거나 파란색, 머그잔이 가득 차 있거나 비어있는 것처럼 말이다.
    • 이러한 특징(characteristics)들은 attributes라고 불린다.
    • attributes는 object의 현 상태를 묘사한다.
    • 차가 움직이거나 전화가 울리는 것처럼 object type에도 behavior 가 적용된다.
  • object는 3가지 dimension이 있다:
    • identity
    • attributes - describe object's current state
    • behavior - what the object is capable of doing
  • class는 object가 뭐가 될지를 묘사한다. object의 청사진(blueprint)과 같음

Object Orientation

 

 

Methods

  • Methods는 behavior를 정의한다
  • Method는 실행문의 집합; function이라고도 함
  • 아래 코드를 보면 sayHello라는 method를 선언함 
  • 메소드를 먼저 정의하고 그 다음에 사용함

Method

 

 

Static

static이 헷갈려서 댓글창을 열어보았읍니다...🤓 영어 만세!

  • memory에는 3가지 타입이 있다:
    • 1. static memory: 실행을 위해 프로그램의 변수/함수/object 저장
    • 2. stack memory: 함수를 실행하기 위해 변수를 저장( 함수 실행 전, arguments/registers 저장, 함수 실행후 옛 값들 로드)
    • 3. heap memory: objects를 저장
  • 실행하기 전에는 objects, 함수, 변수가 없음. 함수를 불러서 프로그램을 시작해야만함
    • 여기서 함수는 main()을 말함
      • main 함수는 static memroy에 생성이 됨
      • 그래서 우리는 main함수를 static이라고 정의함
    • 다른 함수는 필요하다면 static이라고 정의 할 수 있음
  • Static keyword는 변수, objects, 메소드를 준비하기 위해서 사용

static

 

Public

  • Public: accessible anywhere
  • Protected: Accessbible by subclass in other packages, same class and package
  • Private: Accessible by the same class
  • 누가 너의 데이터 또는 메소드에 접근할 수 있는 지를 정의한다

public

 

Hello World! code reuse

  • 아마 반복문이 이해가 안되서 캡쳐를 했던 거 같습니다...
  • 초기값 i= 0, i<=2, i ++ 일때 sayHello()를 실행한다
  • 0부터 시작해서 0,1,2 총 3번 실행합니다. 

Hello world

 

Code reuse 와 parameters

  • method 사용의 장점
    • 코드를 재사용할 수 있음
    • parameters: parameter에 따라서 여러가지를 실행할 수 있음

 

void

  • void는 아무것도 return하지 않는다
  • public static void main(String[] args)의 뜻
    • main methd는 Stirng arrays를 parameters로 불러오고 아무 값도 return 하지 않는다(void)

 

Creating Classes

  • 나만의 커스텀 objects를 생성하기 위해서 class를 만들어야함
  • public class Animal { void bark(){System.out.println("Woof-Woof")
    • bark()가 뭐인지 선언한 것임 
    • class와 그 안의 methods를 사용하기 위해서는 object를 선언해야함

Class 만들기

 

Creating Objects

  • dog 는 Animaldml object가 됨 -> bark()를 부를 수 있음 .을 이용해서
  • .은 object의 attributes와 methods에 연결하기 위해 사용함
  • 이해 안되서 댓글을 캡쳐한 것으로 보임🤓 Gracias Miguel
Object name = new Object();

 

Animal object를 아무 이름으로 만들 수 있어요. 예를 들자면:

 

Animal cat = new Animal();
Animal mouse= new Animal();

 

 

new Animal()을 쓰는 이유는 constructor가 없기 때문이에요. constructor가 있다면 이렇게 됩니다:

 

public class Animal{
   private String name;

 

 

//constructor with parameters

public Animal(String name){
this.name = name;
}

 

//constructor without parameters

public.Animal(){
  this.name="";
 }
}

 

Creating Objects

 

Access Modifiers

  • public: access modifier-> 접근 레벨을 정한다
    • accessible by any other class
  • default: the class is accessible only by classes in the same package
    • 따로 정의 되지 않으면 같은 package안에서는 다 접근 가능
  • protected: 같은 package + subclass는 접근 가능
  • private: 선언된 class만 접근가능

access modifiers

 

Getters & Setters

  • 여기서 조금 막혔습니다😢 혼공자에서 더 파볼 예정
  • Getter: get변수이름; 변수 이름 첫글자 대문자 - return the value
  • Setter: set변수이름; 변수 이름 첫글자 대문자 - set the value

getter and setter

 

static variables

  • static variables&methods는 class에 속함
  • static variable은 다 대문자로 씀

static variable

 

Packages

  • packages: 이름 충돌과 class 접근을 통제하려고 사용됨
    • a group made up of similar types of classes, along with sub-packages

packages

 

Encapsulation

  • OOP에는 4가지 핵심 컨셉이 있습니다
    • encapsulation
    • inheritance
    • polymorphism
    • abstraction
  • encapsulation: implementation details are not visible to users
    • variables of one class will be hidden from the other classes, accessible only through the methods of the current class => data hiding
    • Java에서 encapsulation을 위해서 class변수를 setter와 getter methods로 수정하고 변수값을 본다....??

Encapsulation

 

로켓 사이언스는 아니지만 소프트웨어 엔지니어가 되는 것도 어느정도의 수학적 이해력과 사고력을 필요로 합니다. 저는 아주 수학머리가 없는 것은 아니지만 그렇다고 뛰어나지도 않습니다. 다행히 머리가 나쁘지는 않은 것 같습니다. 자꾸 반복해서 연습하고 보다보면 나아질 거라는 희망을 가지고 오늘도 열심히 프로그래밍을 공부합니다. 자바스트립트 언어를 끝내고 오늘부터는 Java로 넘어갑니다. 

sololearn JavaScript

Dom & Dome Tree

  • Dom 구조는 tree 구조로 설명할수 있음
  • html elements는 tree의 nodes임
  • 같은 레벨에 있으며 siblings 위는 parents 아래 레벨은 child
    • 아래 예시: html의 child는 head, body; head의 child는 title; title은 parent 하나, no children;

Dom JavaScript

 

The document Object

 

 

 

Working with DOM

  • element.childNodes: child nodes의 array를 return
  • element.firstChild: element의 첫번째 child node를 return
  • element.lastChild: element의 마지막 child node를 return
  • element.hasChildNodes: element가 child node가 있으면 return 없으면 false
  • element.nextSibling: 같은 tree level의 다음 node를 return
  • element.previousSibling: 같은 tree level의 이전 node를 return
  • element.parentNode: element의 parent node를 return

DOM properties and methods

 

CSS properties

  • dashes(-) property name에 사용 안됨
    • ex) background-color -> backgroundColor

css properties

 

Removing & Replacing Elements

  • .removeChild(node): element를 지우기위해서(remove) 쓰는 method
  • .replaceChild(newNode, oldNode): oldNode를 newNode로 대체(replace)

removing and replacing elements

 

Animations

  • setInterval() : 타이머를 만들고 정의된 interval(in milliseconds)로 반복함

animations JavaScript

Event handlers

  • onload: page에 들어갈때
  • onunload: page에서 나갈때
  • window.onload: 전체 페이지가 로드 된 후 코드를 실행
  • onchange: textbox에 주로 사용됨; textbox안의 text가 변경 될 때 실행

events JavaScript

 

Event Listeners

  • addEventListener(): 기존 event handler에 덮어쓰지 않고 새로운 event handler를 추가함
    • addEventListner(이벤트핸들러, function, boolean value(optional) 

event listner

 

Event Propagation

  • bubbling: 가장 안쪽 element 먼저 실행하고 바깥쪽 element는 나중에 실행 (거품은 위로 올라간다)
  • capturing: 가장 바깥쪽 element 먼저 실행하고 안쪽의 element를 나중에 실행
  • Capturing goes down the DOM
  • Bubbling goes up the DOM

bubbling and capturing

 

Image Slider

  • "Next" 와 "Prev" button을 이용해서 이미지를 변경
  • onclick="prev()" -> function prev() 를 실행
  • onclick="next()" -> function next() 를 실행
  • num variable은 현재 이미지를 보여줌
    • onclick 하면 array의 이미지를 function(prev or next)에 따라 보여줌

image slider

 

Form Validation

  • required: input field를 필수 입력
  • onsubmit: 제출하면 valildate 해서 실행 아니면 false를 return

form validation

 

for loop

  • for...in loop은 array위에 반복 되면 안됨
  • for...in loop은 반복되는 objects에 반복되는 loop을 생성함
  • 반복되는 variable은 string이고 숫자가 아님
  • variable를 더하면 string concatenation이 실행되지 덧셈이 아님
  • for...of loop은 string 포함한 object 반복에 사용

for...of loop

 

ES6 =>

  • => 로 function을 축약해서 입력할 수 있음

=> ES6

 

ES6 SyntaxError

  • 이중 property names로 object를 생성할 때 마지막 property가 같은 이름의 이전 property를 덮어씀
  • duplicate property names는 String mode 사용시 ES5에서는 SyntaxError를 발생시킴; ES6에서는 제한 없음

ES6 SyntaxError

 

ES6 .CharAt, .slice

  • CharAt(n): n번째의 문자를 읽어줌 (0부터 시작하는거 알쥬?)
  • slice(n): n번째를 잘라서 새로운 object를 만듬 (0부터 시작하는거 알쥬?)
    • Example3: param.slice(1) -> param 의 1번째 (0부터 셈) 여기서는 'size'의 s를 없앰

charAt slice

 

 

Object.assign() in ES6

 

ES6 Object.assign()

 

 

Class Methods in ES6

static method

 

 

Inheritance in ES6

 

Inheritance ES6

 

ES6 Map

ES6 Map

 

ES6 Set

  • Set objectsunique values에 사용 (반복 x)
  • new Set([iterable])이 Set object를 생성함; [interable]은 array 또는 반복 가능한 objects
  • add(value): Set에 new element를 추가
  • delete(value): Set에 해당 value를 제거
  • has(value): set에 해당 value가 있으면 true, 없으면 false를 return
  • clear(): clear the set
  • values(): set의 interator of values를 return
  • Promise
    • new Promise(function(resolve, reject){....}
    • resolve for success, reject for failure
    • .then method : 두 methods를 input으로 사용

Set Promise

 

 

generator function

  • function* -> generator function (or gen function)
    • 비동기 프로그래밍에 서용

gen functions

 

JavaScript Course Certificate

Sololearn의 JavaScript 코스 완강하고 수료증을 받았습니다. 마지막에 ES6가 좀 괴롭히긴 했지만 어찌어찌 끝까지 공부를 마쳤습니다.

아직도 익숙하다고는 할 수 없지만 걸음마를 뗀 기분입니다. 다음 언어는 Java를 배울겁니다. 

Sololearn JavaScript Course Certificate 수료증

 

'sololearn > JavaScript' 카테고리의 다른 글

Sololearn 으로 JavaScript 독학하기 1  (1) 2022.10.26

전에 포스팅에서도 자주 언급했지만 Sololearn이라는 모바일 학습앱을 다운받아서 JavaScript를 배우는 중입니다. Duolingo라는 앱을 아시나요? 언어를 배우는 앱인에 전세계적으로 수억명의 이용자가 있을정도로 유명한 앱입니다. 저는 Duolingo로 프랑스어랑 스페인어를 배우려고 '시도'했었던 경험이 있습니다. Sololearn도 학습하는 방법은 비슷합니다. 각 단계별로 레슨이 있고 레슨의 테스트를 통과해야 다음 레슨이 열리고 포인트도 쌓입니다. 각 문제마다 다른 사용자들이 남긴 코멘트도 볼 수 있어서 다른 사람들은 어떤식으로 같은 문제를 풀었는지 볼 수 있고 의견공유도 가능해서 좋습니다. 저같은 초보자가 언어를 배우기에 좋은 앱입니다.

 

sololearn이라는 카테고리를 만든 이유는 sololearn으로 공부하다가 test나 quiz에서 막히는 부분이나 기억하고 싶은 부분을 기록하고 싶어서 입니다. 늦게 시작한 만큼 더 빨리 배워야 한다는 생각이 들어서 진도를 쭉쭉 나가고는 있지만 복습은 필요하니까요. 지금은 JavaScript를 배우고 있지만 제 목표는 얼른 이번주까지 마무리하고 Java로 넘어가는 겁니다. 대학교 동기중에 Java를 배우다가 포기했다는 친구썰로는 도저히 못하겠다고 하던데 저는 아직 접해본적이 없어서 매우 궁금합니다. 

 

자바스크립트 독학하기

 

 

JavaScript 

The Console

  • JavaScript는 웹 브라우저를 운영하는 프로그래밍언어이다.
  • 대부분의 웹사이트는 JavaScript를 사용한다
  • 문제가 생겼을 때는 console를 이용하여 에러를 찾는다

 

Assignment Operators

  • operators를 사용해서 value를 지정한다. 

assignment operators

Comparison Operators

  • 같은 data type일 때만 사용함

Comparison operators

The For Loop

  • for (i=1; i<=; i++) {}
  • i =1 -> loop은 var i=1에서 시작한다
  • i<=5 -> loop이 실행되는 조건을 정의한다
  • i++ -> 코드가 실행될 때마다 value가 증가(++)한다

The For Loop

 

Prompt

  • prompt( )
  • prompt box가 팝업하면 input 입력 후 "OK" 또는 "Cancel"을 선택할 수 있음 
  • 박스가 닫힐 때까지 다른 부분에 엑세스를 할 수 없음

Creating Objects

Creating Objects

Methods

  • Methods는 object를 정의하는 function임
  • 아래 예시 참조;
  • this keyword를 레퍼런스로 사용해서 현재 object를 사용
  • this 키워드를 사용해서 ChangeName이라는 method를 정의함
  • this.ChangeName = function(name) {this.name =name;}
  • this.name은 object(여기서는 person)의 name을 말함
  • this.name을 function(name)으로 바꾼다는 정의임
  • var 이름을 다르게 했으면 더 이해가 되는 예시가 될 듯.  

methods

 

Combining Arrays

  • concat()
  • arrays를 합쳐서 새로운 array를 만드는 method
  • new-array = array1.concat(array2)

concat

 

 

Array Properties & Methods 문제 

  • 한번에 문제 이해 못하고 풀이도 잘 못해서 기록합니다.
  • Q) 각 게임 레벨마다 포인트를 받는다. 프로그램은 통과한 레벨들 갯수와 각 레벨마다 받은 포인트들을 array로 기록한다. 모든 포인트들의 합을 계산해서 console에 output을 나타내라. 
  • 해야하는 것은 array에서 points만 빼서 합을 구하기
  • sample array가 [3,1,4,8] 이면 3은 레벨을 나타냄. 3을 빼고 1,4,8의 합을 output으로 나타내야함
  • .reduce() function을 쓰는 것이 해답으로 나옴
    • The arr.reduce() method in JavaScript is used to reduce the array to a single value and executes a provided function for each value of the array (from left-to-right) and the return value of the function is stored in an accumulator. -> array에서 하나의 value를 빼고 실행하는 함수
    • array.reduce(accumulator, currentnumber) return a+b
    • accumulator는 여기서 fuction(a,b){return a+b}
    • 0이 current number
    • callback함수의 반환값을 누적함
    • 그러니까 여기서는 레벨값을 없애고 나머지를 더하기 위해 사용
  • elem 은 element 줄임말이었음
  • points[count]를 elem이라고 정의함
  • var elem = parseInt(readLine(), 10);
  • 처음에 var sum=0 는 init value를 정해주는 것임. initial (최초의) 
  • points arrays는 비어있음 그래서 points를 var elem 정의함

  • 위의 이미지는 앱에서 보여준 해답이고 다른 방법으로는 for loop을 사용함; for 를 그나마 사용해봐서 그런지 이게 더 직관적으로 다가옴
  • for (count=0; count<levels; count++){sum = sum+points[count]}
  • count는 0에서 시작; levels보다 작을때 실행됨; count value는 증가함 {sum은 sum과 points array의 count를 더한 값임}

 

The Math Object

 

 

Date, time, setInterval, innerHTML

  • innerHTML: HTML 안의 요소를 설정하거나 불러옴
  • setinterval (function, 시간 ms) -> 1000ms 가 1초; 1초마다 해당 function 반복함)
  • 1일 = 86,400,000 ms
  • JavaScript는 월을 0 to 11 으로 셈

JavaScript time method

 


 

Sololearn이라는 학습앱을 강력 추천합니다. (광고 아님) 초보자에게 기본지식을 쉽게 학습할 수 있고 연습할 수 있게 해줍니다. 함께 배우는 유저들의 다양한 의견들과 코드를 보면서 이렇게도 할 수 있구나를 배웁니다. 아직 헷갈리는 부분이나 이해가 안되는 부분이 많이 있긴 하지만 첫 술에 배부를 수는 없겠지요. 

 

 

'sololearn > JavaScript' 카테고리의 다른 글

Sololearn 으로 JavaScript 독학하기 2  (0) 2022.10.31

+ Recent posts