1.객체지향 프로그래밍이란
객체를 사용하는 프로그래밍 방식 OOP
객체는 상태와 동작을 가지고 있음.
캡슐화: 데이터와 함수를 하나의 덩어리 객체로 묶는 방법
객체지향언어는 캡슐화, 상속, 다형성으로 정의된다.
+ 추상화
캡슐화: 관련된 데이터와 알고리즘을 하나의 묶음으로 정리하는 것, 캑체를 캡슐 내부로 보호하는것
상속: 자식클래스는 부모 클래스의 속성과 동작을 물려받음
다형성: 동일한 이름의 동작이라고 하여도 객체의 실제 타입에 따라서 동작의 내용이 달라질 수 있음을 의미
추상화: 불필요한 정보는 숨기고 중요한 정보만 표현
객체에 대한 설계도를 클래스라고 하며 이 클래스로 부터 만들어지는 객체를 인스턴스라고 함
절차지향프로그래밍 절차대로 하는
문제점 : 함수와 데이터가 분리된다.
2. 클래스와 객체 만들기
본문내용넣기
3. 생성자와 메소드 오버라이딩
프로그래머가 생성자를 한 개 이상 정의했느데
객체 생성할 때, 아무것도 매개변수로 안 넘겨주면 오류 발생!!
4. 접근제어
접근제어 지정자: 클래스이 멤버에게 접근을 제어하는 것
private: 클래스 안에서만 접근
public: 누구나 접근
protected: 자식 클래스만 접근
default:동일한 패키지 안에서 접근가능
접근자와 설정자를 사용하는 이유: 매개변수를 통해 잘못된 값이 넘어오는 경우 이를 사전에
차단하기 위해서이다. 접근자만 제공하면 자동적으로 읽기만 가능한 필드를 만들 수 있다.
5. 무엇을 클래스로 만들까?
마무리
프로그래밍
1번
package programming4;
class Rocket{
int x,y;
public Rocket(int x, int y) {
super();
this.x=x;
this.y=y;
}
@Override
public String toString() {
return "Rocket [x=" + x + ", y=" + y + "]";
}
public int getX() { return x;}
public void setX() {this.x = x;}
public int getY() {return y;}
public void setY(int y) {this.y = y;}
public void moveup() {this.y++;}
}
public class RocketTest {
public static void main(String[] args) {
Rocket r = new Rocket(10,20);
System.out.print(r);
r.moveup();
System.out.print(r);
}
}
2번
package programming4;
class Person{
String name;
String mobile;
String office;
String email;
public Person(String n, String m, String o, String e) {
name = n;
mobile = m;
office = o;
email = e;
}
@Override
public String toString() {
return "Person [name=" + name + ", mobile=" + mobile + ", office=" + office + ", email=" + email + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getOffice() {
return office;
}
public void setOffice(String office) {
this.office = office;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
public class PersonTest {
Person p = new Person("이승민","010010010","02-0123-1234","이메일");
p.setName("김승민");
}
3번
package programming4;
public class Song{ //다중 생성자
private String title;
private String artist;
private int length;
public Song(String artist, String title, int length) {
this.title = title;
this.artist = artist;
this.length=length;
}
public Song(String artist, String title) {
this.title = title;
this.artist = artist;
}
public Song(String artist) {
this.title = title;
}
public Song() {
this("가수","제목");
}
}
public class SongTest {
public static void main(String[] args) {
}
}
5번
package programming4;
class Student{
private String name;
private int num;
private int age;
public Student(String name, int num, int age) {
super();
this.name = name;
this.num = num;
this.age = age;
}
@Override
public String toString() {
return "Student 객체가 생성되었습니다. ";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class StudentTest {
public static void main(String[] args) {
Student std = new Student("김승민",2011333,22);
System.out.println(std.toString());
}
}
6번
package programming4;
class Date{
private int year;
private int month;
private int day;
public Date(int year, int month, int day) {
super();
this.year = year;
this.month = month;
this.day = day;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
@Override
public String toString() {
return year + "." + month + "." + day ;
}
}
public class DateTest {
public static void main(String[] args) {
Date obj = new Date(2022,10,8);
System.out.print(obj);
}
}
7번
5. 무엇을 클래스로 만들까?
마무리