항해 1주차 WTL

쭈오기단·2023년 2월 19일

항해

목록 보기
8/9

1. 조건문

프로그램의 흐름을 바꾸는 역할을 하는 문장들은 '제어문'이라고 한다. 제어문에는 조건문과 반복문이 있다. 조건문은 조건에 따라 다른 문장이 수행되도록 한다.

  • if문은 거짓이 되면 if문을 빠져나간다. (반대로 반복문은 조건식이 참이 되면 빠져나간다.)
if (조건식) { 조건이 참일 때 수행할 문장 )}
if (조건식) { 조건식이 '참'일때 수행될 문장}
 else { 조건식이 '거짓'일때 수행될 문장}
  • 조건식의 결과는 반드시 true, false로 나와야 한다. (불리언 타입)
  • 중첩으로 사용 가능
switch(조건식) {
	case1 : 조건식 참일 경우 수행될 문장
    break;
    case2 : 조건식 참일 경우 수행될 문장
    break;
    default : 조건식 결과와 일치하는 case문이 없을 때 수행될 문장
    }
  • switch문의 제약 조건
    1) 조건식 결과는 정수 또는 문자열이어야 한다.(불리언 타입은 if문)
    2) case문의 값은 정수, 상수(문자 포함), 문자열만 가능. 중복 안됨.

    return과 break의 차이 : return은 지정지점으로 반환한다. break는 가장 자까운 제어문을 종료시킨다. 코드는 정보의 길을 만들어주는 일이라고 생각하면서 짜보자.

2. 반복문

for(int (초기화; 조건식; 증감식)
	{ 조건식 참인경우 실행시킬 문장}
  • 초기화 : 반복문에 사용될 변수를 초기화(최초 정보 입력) 한다. 보통은 변수 하나를 사용하지만 두개를 사용할 때도 있다. 두개를 사용할때의 두 변수 타입은 같아야 한다.

    변수

  • 조건식 : 조건값이 참이면 반복을 계속, 거짓이면 for문을 벗어난다. 조건식을 제대로 적지않으면 무한 반복을 하게 된다.
  • 증감식 : 변수의 값을 증가하거나 감소시키는 규칙을 적는다.
sum = sum+1;
sum += i;
  • 중첩 for문 사용 가능 : 특히 배열에 많이 쓰인다.
while(조건식_ {조건식 결과가 참일동안 반복될 문장}
do {조건식의 연산결과 참일 때 수행될 문장(처음 한번은 무조건 실행)} while(조건식);
  • while은 for문과 완벽하게 변환이 가능하다.

3. 배열

  • 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
  • 저장공간이 연속적으로 배치 된다. (index)

배열의 생성 : 타입[] 변수이름; // 참조변수 score선언
score = new int[5]; // int타입의 값 5개 저장공간을 가진 배열 선언
int[] score = new int [5];

  • index 범위 : 0부터 '배열길이 -1'까지

4. 객체지향

객체지향 프로그램이란? : 프로그로밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법

  • 객체 : 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 값을 저장할 변수와 작업을 수행할 메소드를 서로 연관된 것들끼리 묶어서 만듯 것

객체 지향 프로그래밍의 특징

  1. 추상화
  2. 캡슐화
  3. 상속
  4. 다형성

1. 추상화

  • 객체에서 공통된 속성과 행위를 추출하는 것
  • 공통의 속성과 행위를 찾아서 타입의 정의하는 과정
  • 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단하게 만드는 것

2. 캡슐화

  • 데이터 구조와 데이터를 다루는 방법들을 결합시켜 묶는것. (변수와 함수를 하나로 묶는 것을 의미)
  • 낮은 결합도를 유지할 수 있도록 설계하는 것

3. 상속

  • 클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것
  • 새로운 클래스가 기존 클래스의 데이터와 연산을 이용할 수 있게 하는 기능
  • 장점 : 재사용으로 인한 코드가 줄음. 범용적인 사용 가능. 자료와 메서드의 자유로운 사용 및 추가 가능
  • 단점 : 상위 클래스의 변경 어려움. 불필요한 클래스 증가. 상속이 잘못 사용될 수 있음.

4. 다형성

  • 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석 될 수 있음
  • 어떠한 요소에 여러 개념을 넣어 놓는것
  • 오버라이딩 : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용하는 것
  • 오버로딩 : 같은 이름의 메서드가 인자의 개수나 자료형에 따라 다른 기능을 하는 것

객체 지향 프로그래밍의 장단점

장점

  • 클래스 단위로 모듈화 시켜서 개발하기 때문에 업무 분담이 편하고 대규모 소프트웨어 개발에 적합
  • 클래스 단위로 수정이 가능하기 때문에 유지 보수가 편리
  • 클래스를 재사용하거나 상속을 통해 확장함으로써 코드 재사용이 용이

단점

  • 처리속도가 상대적으로 느림
  • 객체의 수가 많아짐에 따라 용량이 커질 수 있음
  • 설계시 많은 시간과 노력이 필요할 수 있음

이번주 공부한 내용

월, 화 : java 기본언어 공부 ( 변수, 연산자, 조건문, 반복문, 배열 )
수, 목, 금 : 기본언어 복습 및 알고리즘 기초 문제 (28중 21개 풀음)
공부 시간 : 월-토 92시간/ 일요일 복습 및 WTL작성

어려웠던 점

이미 자바를 공부해온 사람들과의 격차가 너무 크게 느껴져서 조금 벅찬 한주였다. 무박2일동안 진행했던 프로젝트 달리고 월요일부터 바로 공부가 시작되서 컨디션 조절이 가장 힘들었다. 이제 막 개념들에 대해 알아가고 있는데 for문 작성하는 연습을 마치기도 전에 알고리즘 문제 푸는게 너무 벅찬 한주였다. 누구보다 일찍오고 누구보다 늦게가려고 노력했지만 다른 사람들과의 격차를 줄이려면 더 열심히 하는 수밖에 없다.

한 주 동안 공부하며 느낀 점

100일. 길다면 길고 짧다면 짧을 수 있다. 누군가는 일년동안 차근차근 공부하며 올라왔는데 내가 한번에 잘한다는 것은 불가능할 것이다. 그렇다면 이 시간을 잘 버티기 위해서 어떻게 할 수 있을까? 공부하는 시간에 좀 더 집중하고 내가 할 수 있는 목표들을 세우면서 하나씩 해나가는 것이 필요하다. 또한 체력 관리도 중요한것 같다. 전날 너무 무리해서 새벽까지 달려버리면 다음날 컨디션에 문제가 생길수 밖에 없다. 다음주부터는 날씨도 풀리는 만큼 아침에 30분이라도 꼭 산책이나 운동을 시작해야겠다.

다음 주 목표

  • for문으로 별 만들기 자유롭게 짤 수 있도록 매일 연습하기
  • 조급해하지 않고 객체지향의 개념에 대해서 공부하기
  • 매일 운동하기
profile
나는야 해적이 될거야

0개의 댓글